{
  "schema": "b07.highlight-v2-public-comparison.v1",
  "frame_count": 24,
  "reference_size": [
    1920,
    1078
  ],
  "cell_count": 137,
  "methods": [
    {
      "id": "hsv",
      "label": "原方法：局部颜色阈值"
    },
    {
      "id": "closed",
      "label": "原方法：闭合边界填充"
    },
    {
      "id": "boundary",
      "label": "新方法：颜色边界与多方向投票"
    }
  ],
  "model_fit_performed": false,
  "baseline_retuning_performed": false,
  "frozen_at_utc": "2026-09-07T09:24:22.499589+00:00",
  "evaluated_at_utc": "2026-09-07T09:29:43.642996+00:00",
  "new_method_config": {
    "saturation_min": 10,
    "value_min": 45,
    "alignment_fraction": 0.16,
    "background_fraction": 0.2,
    "ridge_threshold": 0.05,
    "boundary_fraction": 0.55,
    "ray_vote_threshold": 0.4,
    "ray_count": 18,
    "minimum_boundary_edges": 4
  },
  "original_baseline_config": {
    "hsv_threshold": 0.003154290898237378,
    "closed_edge_strength": 0.015
  },
  "partitions": {
    "development": {
      "frame_count": 8,
      "recordings": [
        "HeroesOldenEra-2026-09-02-20-34-03",
        "Recording-2026-08-30-155825"
      ],
      "methods": {
        "hsv": {
          "union": {
            "n": 774,
            "positive": 401,
            "negative": 373,
            "tp": 287,
            "fp": 167,
            "fn": 114,
            "tn": 206,
            "precision": 0.6321585903083701,
            "recall": 0.71571072319202,
            "f1": 0.6713450292397661,
            "accuracy": 0.6369509043927648
          },
          "by_recording": {
            "HeroesOldenEra-2026-09-02-20-34-03": {
              "n": 410,
              "positive": 202,
              "negative": 208,
              "tp": 88,
              "fp": 2,
              "fn": 114,
              "tn": 206,
              "precision": 0.9777777777777777,
              "recall": 0.43564356435643564,
              "f1": 0.6027397260273972,
              "accuracy": 0.7170731707317073
            },
            "Recording-2026-08-30-155825": {
              "n": 364,
              "positive": 199,
              "negative": 165,
              "tp": 199,
              "fp": 165,
              "fn": 0,
              "tn": 0,
              "precision": 0.5467032967032966,
              "recall": 1.0,
              "f1": 0.7069271758436945,
              "accuracy": 0.5467032967032966
            }
          },
          "by_frame": {
            "more-039": {
              "n": 94,
              "positive": 80,
              "negative": 14,
              "tp": 12,
              "fp": 0,
              "fn": 68,
              "tn": 14,
              "precision": 1.0,
              "recall": 0.15,
              "f1": 0.2608695652173913,
              "accuracy": 0.2765957446808511
            },
            "more-040": {
              "n": 92,
              "positive": 35,
              "negative": 57,
              "tp": 28,
              "fp": 1,
              "fn": 7,
              "tn": 56,
              "precision": 0.9655172413793104,
              "recall": 0.8,
              "f1": 0.875,
              "accuracy": 0.9130434782608695
            },
            "more-044": {
              "n": 109,
              "positive": 0,
              "negative": 109,
              "tp": 0,
              "fp": 1,
              "fn": 0,
              "tn": 108,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.9908256880733946
            },
            "more-045": {
              "n": 115,
              "positive": 87,
              "negative": 28,
              "tp": 48,
              "fp": 0,
              "fn": 39,
              "tn": 28,
              "precision": 1.0,
              "recall": 0.5517241379310345,
              "f1": 0.7111111111111111,
              "accuracy": 0.6608695652173913
            },
            "more-085": {
              "n": 89,
              "positive": 50,
              "negative": 39,
              "tp": 50,
              "fp": 39,
              "fn": 0,
              "tn": 0,
              "precision": 0.5617977528089888,
              "recall": 1.0,
              "f1": 0.7194244604316546,
              "accuracy": 0.5617977528089888
            },
            "more-086": {
              "n": 90,
              "positive": 90,
              "negative": 0,
              "tp": 90,
              "fp": 0,
              "fn": 0,
              "tn": 0,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-087": {
              "n": 89,
              "positive": 0,
              "negative": 89,
              "tp": 0,
              "fp": 89,
              "fn": 0,
              "tn": 0,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.0
            },
            "more-091": {
              "n": 96,
              "positive": 59,
              "negative": 37,
              "tp": 59,
              "fp": 37,
              "fn": 0,
              "tn": 0,
              "precision": 0.6145833333333334,
              "recall": 1.0,
              "f1": 0.7612903225806451,
              "accuracy": 0.6145833333333334
            }
          }
        },
        "closed": {
          "union": {
            "n": 774,
            "positive": 401,
            "negative": 373,
            "tp": 246,
            "fp": 105,
            "fn": 155,
            "tn": 268,
            "precision": 0.7008547008547008,
            "recall": 0.6134663341645885,
            "f1": 0.6542553191489362,
            "accuracy": 0.6640826873385013
          },
          "by_recording": {
            "HeroesOldenEra-2026-09-02-20-34-03": {
              "n": 410,
              "positive": 202,
              "negative": 208,
              "tp": 61,
              "fp": 1,
              "fn": 141,
              "tn": 207,
              "precision": 0.9838709677419355,
              "recall": 0.30198019801980197,
              "f1": 0.4621212121212121,
              "accuracy": 0.6536585365853659
            },
            "Recording-2026-08-30-155825": {
              "n": 364,
              "positive": 199,
              "negative": 165,
              "tp": 185,
              "fp": 104,
              "fn": 14,
              "tn": 61,
              "precision": 0.6401384083044983,
              "recall": 0.9296482412060302,
              "f1": 0.7581967213114754,
              "accuracy": 0.6758241758241759
            }
          },
          "by_frame": {
            "more-039": {
              "n": 94,
              "positive": 80,
              "negative": 14,
              "tp": 0,
              "fp": 0,
              "fn": 80,
              "tn": 14,
              "precision": null,
              "recall": 0.0,
              "f1": 0.0,
              "accuracy": 0.14893617021276595
            },
            "more-040": {
              "n": 92,
              "positive": 35,
              "negative": 57,
              "tp": 7,
              "fp": 0,
              "fn": 28,
              "tn": 57,
              "precision": 1.0,
              "recall": 0.2,
              "f1": 0.3333333333333333,
              "accuracy": 0.6956521739130435
            },
            "more-044": {
              "n": 109,
              "positive": 0,
              "negative": 109,
              "tp": 0,
              "fp": 1,
              "fn": 0,
              "tn": 108,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.9908256880733946
            },
            "more-045": {
              "n": 115,
              "positive": 87,
              "negative": 28,
              "tp": 54,
              "fp": 0,
              "fn": 33,
              "tn": 28,
              "precision": 1.0,
              "recall": 0.6206896551724138,
              "f1": 0.7659574468085106,
              "accuracy": 0.7130434782608696
            },
            "more-085": {
              "n": 89,
              "positive": 50,
              "negative": 39,
              "tp": 46,
              "fp": 25,
              "fn": 4,
              "tn": 14,
              "precision": 0.647887323943662,
              "recall": 0.92,
              "f1": 0.7603305785123967,
              "accuracy": 0.6741573033707865
            },
            "more-086": {
              "n": 90,
              "positive": 90,
              "negative": 0,
              "tp": 85,
              "fp": 0,
              "fn": 5,
              "tn": 0,
              "precision": 1.0,
              "recall": 0.9444444444444444,
              "f1": 0.9714285714285714,
              "accuracy": 0.9444444444444444
            },
            "more-087": {
              "n": 89,
              "positive": 0,
              "negative": 89,
              "tp": 0,
              "fp": 58,
              "fn": 0,
              "tn": 31,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.34831460674157305
            },
            "more-091": {
              "n": 96,
              "positive": 59,
              "negative": 37,
              "tp": 54,
              "fp": 21,
              "fn": 5,
              "tn": 16,
              "precision": 0.72,
              "recall": 0.9152542372881356,
              "f1": 0.8059701492537313,
              "accuracy": 0.7291666666666666
            }
          }
        },
        "boundary": {
          "union": {
            "n": 774,
            "positive": 401,
            "negative": 373,
            "tp": 379,
            "fp": 52,
            "fn": 22,
            "tn": 321,
            "precision": 0.8793503480278422,
            "recall": 0.9451371571072319,
            "f1": 0.9110576923076923,
            "accuracy": 0.9043927648578811
          },
          "by_recording": {
            "HeroesOldenEra-2026-09-02-20-34-03": {
              "n": 410,
              "positive": 202,
              "negative": 208,
              "tp": 196,
              "fp": 2,
              "fn": 6,
              "tn": 206,
              "precision": 0.98989898989899,
              "recall": 0.9702970297029703,
              "f1": 0.98,
              "accuracy": 0.9804878048780488
            },
            "Recording-2026-08-30-155825": {
              "n": 364,
              "positive": 199,
              "negative": 165,
              "tp": 183,
              "fp": 50,
              "fn": 16,
              "tn": 115,
              "precision": 0.7854077253218884,
              "recall": 0.9195979899497487,
              "f1": 0.8472222222222222,
              "accuracy": 0.8186813186813187
            }
          },
          "by_frame": {
            "more-039": {
              "n": 94,
              "positive": 80,
              "negative": 14,
              "tp": 74,
              "fp": 0,
              "fn": 6,
              "tn": 14,
              "precision": 1.0,
              "recall": 0.925,
              "f1": 0.961038961038961,
              "accuracy": 0.9361702127659575
            },
            "more-040": {
              "n": 92,
              "positive": 35,
              "negative": 57,
              "tp": 35,
              "fp": 0,
              "fn": 0,
              "tn": 57,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-044": {
              "n": 109,
              "positive": 0,
              "negative": 109,
              "tp": 0,
              "fp": 1,
              "fn": 0,
              "tn": 108,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.9908256880733946
            },
            "more-045": {
              "n": 115,
              "positive": 87,
              "negative": 28,
              "tp": 87,
              "fp": 1,
              "fn": 0,
              "tn": 27,
              "precision": 0.9886363636363636,
              "recall": 1.0,
              "f1": 0.9942857142857143,
              "accuracy": 0.991304347826087
            },
            "more-085": {
              "n": 89,
              "positive": 50,
              "negative": 39,
              "tp": 43,
              "fp": 10,
              "fn": 7,
              "tn": 29,
              "precision": 0.8113207547169812,
              "recall": 0.86,
              "f1": 0.8349514563106796,
              "accuracy": 0.8089887640449438
            },
            "more-086": {
              "n": 90,
              "positive": 90,
              "negative": 0,
              "tp": 84,
              "fp": 0,
              "fn": 6,
              "tn": 0,
              "precision": 1.0,
              "recall": 0.9333333333333333,
              "f1": 0.9655172413793104,
              "accuracy": 0.9333333333333333
            },
            "more-087": {
              "n": 89,
              "positive": 0,
              "negative": 89,
              "tp": 0,
              "fp": 37,
              "fn": 0,
              "tn": 52,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.5842696629213483
            },
            "more-091": {
              "n": 96,
              "positive": 59,
              "negative": 37,
              "tp": 56,
              "fp": 3,
              "fn": 3,
              "tn": 34,
              "precision": 0.9491525423728814,
              "recall": 0.9491525423728814,
              "f1": 0.9491525423728814,
              "accuracy": 0.9375
            }
          },
          "colors": {
            "green": {
              "n": 774,
              "positive": 242,
              "negative": 532,
              "tp": 221,
              "fp": 57,
              "fn": 21,
              "tn": 475,
              "precision": 0.7949640287769785,
              "recall": 0.9132231404958677,
              "f1": 0.85,
              "accuracy": 0.8992248062015504
            },
            "yellow": {
              "n": 774,
              "positive": 223,
              "negative": 551,
              "tp": 180,
              "fp": 96,
              "fn": 43,
              "tn": 455,
              "precision": 0.6521739130434783,
              "recall": 0.8071748878923767,
              "f1": 0.7214428857715431,
              "accuracy": 0.8204134366925064
            }
          }
        }
      },
      "all_positive": {
        "n": 774,
        "positive": 401,
        "negative": 373,
        "tp": 401,
        "fp": 373,
        "fn": 0,
        "tn": 0,
        "precision": 0.5180878552971576,
        "recall": 1.0,
        "f1": 0.6825531914893617,
        "accuracy": 0.5180878552971576
      },
      "coverage": {
        "scored_cells": 774,
        "total_cells": 1096,
        "unknown_cells": 322,
        "fraction": 0.7062043795620438
      }
    },
    "validation": {
      "frame_count": 8,
      "recordings": [
        "QQ2026730-202130",
        "QQ2026730-221734"
      ],
      "methods": {
        "hsv": {
          "union": {
            "n": 734,
            "positive": 333,
            "negative": 401,
            "tp": 237,
            "fp": 44,
            "fn": 96,
            "tn": 357,
            "precision": 0.8434163701067615,
            "recall": 0.7117117117117117,
            "f1": 0.7719869706840391,
            "accuracy": 0.8092643051771117
          },
          "by_recording": {
            "QQ2026730-202130": {
              "n": 368,
              "positive": 184,
              "negative": 184,
              "tp": 105,
              "fp": 2,
              "fn": 79,
              "tn": 182,
              "precision": 0.9813084112149533,
              "recall": 0.5706521739130435,
              "f1": 0.7216494845360825,
              "accuracy": 0.779891304347826
            },
            "QQ2026730-221734": {
              "n": 366,
              "positive": 149,
              "negative": 217,
              "tp": 132,
              "fp": 42,
              "fn": 17,
              "tn": 175,
              "precision": 0.7586206896551724,
              "recall": 0.8859060402684564,
              "f1": 0.8173374613003096,
              "accuracy": 0.8387978142076503
            }
          },
          "by_frame": {
            "more-061": {
              "n": 92,
              "positive": 90,
              "negative": 2,
              "tp": 48,
              "fp": 0,
              "fn": 42,
              "tn": 2,
              "precision": 1.0,
              "recall": 0.5333333333333333,
              "f1": 0.6956521739130435,
              "accuracy": 0.5434782608695652
            },
            "more-062": {
              "n": 92,
              "positive": 0,
              "negative": 92,
              "tp": 0,
              "fp": 2,
              "fn": 0,
              "tn": 90,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.9782608695652174
            },
            "more-063": {
              "n": 92,
              "positive": 38,
              "negative": 54,
              "tp": 16,
              "fp": 0,
              "fn": 22,
              "tn": 54,
              "precision": 1.0,
              "recall": 0.42105263157894735,
              "f1": 0.5925925925925926,
              "accuracy": 0.7608695652173914
            },
            "more-065": {
              "n": 92,
              "positive": 56,
              "negative": 36,
              "tp": 41,
              "fp": 0,
              "fn": 15,
              "tn": 36,
              "precision": 1.0,
              "recall": 0.7321428571428571,
              "f1": 0.845360824742268,
              "accuracy": 0.8369565217391305
            },
            "more-073": {
              "n": 91,
              "positive": 60,
              "negative": 31,
              "tp": 56,
              "fp": 8,
              "fn": 4,
              "tn": 23,
              "precision": 0.875,
              "recall": 0.9333333333333333,
              "f1": 0.9032258064516129,
              "accuracy": 0.8681318681318682
            },
            "more-074": {
              "n": 91,
              "positive": 0,
              "negative": 91,
              "tp": 0,
              "fp": 18,
              "fn": 0,
              "tn": 73,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.8021978021978022
            },
            "more-076": {
              "n": 91,
              "positive": 38,
              "negative": 53,
              "tp": 30,
              "fp": 6,
              "fn": 8,
              "tn": 47,
              "precision": 0.8333333333333334,
              "recall": 0.7894736842105263,
              "f1": 0.8108108108108109,
              "accuracy": 0.8461538461538461
            },
            "more-079": {
              "n": 93,
              "positive": 51,
              "negative": 42,
              "tp": 46,
              "fp": 10,
              "fn": 5,
              "tn": 32,
              "precision": 0.8214285714285714,
              "recall": 0.9019607843137255,
              "f1": 0.8598130841121495,
              "accuracy": 0.8387096774193549
            }
          }
        },
        "closed": {
          "union": {
            "n": 734,
            "positive": 333,
            "negative": 401,
            "tp": 103,
            "fp": 0,
            "fn": 230,
            "tn": 401,
            "precision": 1.0,
            "recall": 0.30930930930930933,
            "f1": 0.4724770642201835,
            "accuracy": 0.6866485013623979
          },
          "by_recording": {
            "QQ2026730-202130": {
              "n": 368,
              "positive": 184,
              "negative": 184,
              "tp": 58,
              "fp": 0,
              "fn": 126,
              "tn": 184,
              "precision": 1.0,
              "recall": 0.31521739130434784,
              "f1": 0.4793388429752066,
              "accuracy": 0.657608695652174
            },
            "QQ2026730-221734": {
              "n": 366,
              "positive": 149,
              "negative": 217,
              "tp": 45,
              "fp": 0,
              "fn": 104,
              "tn": 217,
              "precision": 1.0,
              "recall": 0.30201342281879195,
              "f1": 0.4639175257731959,
              "accuracy": 0.7158469945355191
            }
          },
          "by_frame": {
            "more-061": {
              "n": 92,
              "positive": 90,
              "negative": 2,
              "tp": 3,
              "fp": 0,
              "fn": 87,
              "tn": 2,
              "precision": 1.0,
              "recall": 0.03333333333333333,
              "f1": 0.06451612903225806,
              "accuracy": 0.05434782608695652
            },
            "more-062": {
              "n": 92,
              "positive": 0,
              "negative": 92,
              "tp": 0,
              "fp": 0,
              "fn": 0,
              "tn": 92,
              "precision": null,
              "recall": null,
              "f1": null,
              "accuracy": 1.0
            },
            "more-063": {
              "n": 92,
              "positive": 38,
              "negative": 54,
              "tp": 0,
              "fp": 0,
              "fn": 38,
              "tn": 54,
              "precision": null,
              "recall": 0.0,
              "f1": 0.0,
              "accuracy": 0.5869565217391305
            },
            "more-065": {
              "n": 92,
              "positive": 56,
              "negative": 36,
              "tp": 55,
              "fp": 0,
              "fn": 1,
              "tn": 36,
              "precision": 1.0,
              "recall": 0.9821428571428571,
              "f1": 0.990990990990991,
              "accuracy": 0.9891304347826086
            },
            "more-073": {
              "n": 91,
              "positive": 60,
              "negative": 31,
              "tp": 15,
              "fp": 0,
              "fn": 45,
              "tn": 31,
              "precision": 1.0,
              "recall": 0.25,
              "f1": 0.4,
              "accuracy": 0.5054945054945055
            },
            "more-074": {
              "n": 91,
              "positive": 0,
              "negative": 91,
              "tp": 0,
              "fp": 0,
              "fn": 0,
              "tn": 91,
              "precision": null,
              "recall": null,
              "f1": null,
              "accuracy": 1.0
            },
            "more-076": {
              "n": 91,
              "positive": 38,
              "negative": 53,
              "tp": 4,
              "fp": 0,
              "fn": 34,
              "tn": 53,
              "precision": 1.0,
              "recall": 0.10526315789473684,
              "f1": 0.19047619047619047,
              "accuracy": 0.6263736263736264
            },
            "more-079": {
              "n": 93,
              "positive": 51,
              "negative": 42,
              "tp": 26,
              "fp": 0,
              "fn": 25,
              "tn": 42,
              "precision": 1.0,
              "recall": 0.5098039215686274,
              "f1": 0.6753246753246753,
              "accuracy": 0.7311827956989247
            }
          }
        },
        "boundary": {
          "union": {
            "n": 734,
            "positive": 333,
            "negative": 401,
            "tp": 330,
            "fp": 2,
            "fn": 3,
            "tn": 399,
            "precision": 0.9939759036144579,
            "recall": 0.990990990990991,
            "f1": 0.9924812030075187,
            "accuracy": 0.9931880108991825
          },
          "by_recording": {
            "QQ2026730-202130": {
              "n": 368,
              "positive": 184,
              "negative": 184,
              "tp": 181,
              "fp": 0,
              "fn": 3,
              "tn": 184,
              "precision": 1.0,
              "recall": 0.9836956521739131,
              "f1": 0.9917808219178083,
              "accuracy": 0.9918478260869565
            },
            "QQ2026730-221734": {
              "n": 366,
              "positive": 149,
              "negative": 217,
              "tp": 149,
              "fp": 2,
              "fn": 0,
              "tn": 215,
              "precision": 0.9867549668874173,
              "recall": 1.0,
              "f1": 0.9933333333333333,
              "accuracy": 0.994535519125683
            }
          },
          "by_frame": {
            "more-061": {
              "n": 92,
              "positive": 90,
              "negative": 2,
              "tp": 87,
              "fp": 0,
              "fn": 3,
              "tn": 2,
              "precision": 1.0,
              "recall": 0.9666666666666667,
              "f1": 0.9830508474576272,
              "accuracy": 0.967391304347826
            },
            "more-062": {
              "n": 92,
              "positive": 0,
              "negative": 92,
              "tp": 0,
              "fp": 0,
              "fn": 0,
              "tn": 92,
              "precision": null,
              "recall": null,
              "f1": null,
              "accuracy": 1.0
            },
            "more-063": {
              "n": 92,
              "positive": 38,
              "negative": 54,
              "tp": 38,
              "fp": 0,
              "fn": 0,
              "tn": 54,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-065": {
              "n": 92,
              "positive": 56,
              "negative": 36,
              "tp": 56,
              "fp": 0,
              "fn": 0,
              "tn": 36,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-073": {
              "n": 91,
              "positive": 60,
              "negative": 31,
              "tp": 60,
              "fp": 1,
              "fn": 0,
              "tn": 30,
              "precision": 0.9836065573770492,
              "recall": 1.0,
              "f1": 0.9917355371900827,
              "accuracy": 0.989010989010989
            },
            "more-074": {
              "n": 91,
              "positive": 0,
              "negative": 91,
              "tp": 0,
              "fp": 0,
              "fn": 0,
              "tn": 91,
              "precision": null,
              "recall": null,
              "f1": null,
              "accuracy": 1.0
            },
            "more-076": {
              "n": 91,
              "positive": 38,
              "negative": 53,
              "tp": 38,
              "fp": 0,
              "fn": 0,
              "tn": 53,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-079": {
              "n": 93,
              "positive": 51,
              "negative": 42,
              "tp": 51,
              "fp": 1,
              "fn": 0,
              "tn": 41,
              "precision": 0.9807692307692307,
              "recall": 1.0,
              "f1": 0.9902912621359223,
              "accuracy": 0.989247311827957
            }
          },
          "colors": {
            "green": {
              "n": 734,
              "positive": 128,
              "negative": 606,
              "tp": 98,
              "fp": 2,
              "fn": 30,
              "tn": 604,
              "precision": 0.98,
              "recall": 0.765625,
              "f1": 0.8596491228070176,
              "accuracy": 0.9564032697547684
            },
            "yellow": {
              "n": 734,
              "positive": 242,
              "negative": 492,
              "tp": 237,
              "fp": 67,
              "fn": 5,
              "tn": 425,
              "precision": 0.7796052631578947,
              "recall": 0.9793388429752066,
              "f1": 0.8681318681318682,
              "accuracy": 0.9019073569482289
            }
          }
        }
      },
      "all_positive": {
        "n": 734,
        "positive": 333,
        "negative": 401,
        "tp": 333,
        "fp": 401,
        "fn": 0,
        "tn": 0,
        "precision": 0.4536784741144414,
        "recall": 1.0,
        "f1": 0.6241799437675727,
        "accuracy": 0.4536784741144414
      },
      "coverage": {
        "scored_cells": 734,
        "total_cells": 1096,
        "unknown_cells": 362,
        "fraction": 0.6697080291970803
      }
    },
    "test": {
      "frame_count": 8,
      "recordings": [
        "HeroesOldenEra-2026-09-02-21-49-22",
        "ScreenRecording-2026-08-22-214131"
      ],
      "methods": {
        "hsv": {
          "union": {
            "n": 743,
            "positive": 366,
            "negative": 377,
            "tp": 188,
            "fp": 15,
            "fn": 178,
            "tn": 362,
            "precision": 0.9261083743842364,
            "recall": 0.5136612021857924,
            "f1": 0.6608084358523726,
            "accuracy": 0.7402422611036339
          },
          "by_recording": {
            "HeroesOldenEra-2026-09-02-21-49-22": {
              "n": 367,
              "positive": 142,
              "negative": 225,
              "tp": 86,
              "fp": 13,
              "fn": 56,
              "tn": 212,
              "precision": 0.8686868686868687,
              "recall": 0.6056338028169014,
              "f1": 0.7136929460580913,
              "accuracy": 0.8119891008174387
            },
            "ScreenRecording-2026-08-22-214131": {
              "n": 376,
              "positive": 224,
              "negative": 152,
              "tp": 102,
              "fp": 2,
              "fn": 122,
              "tn": 150,
              "precision": 0.9807692307692307,
              "recall": 0.45535714285714285,
              "f1": 0.6219512195121951,
              "accuracy": 0.6702127659574468
            }
          },
          "by_frame": {
            "more-049": {
              "n": 90,
              "positive": 0,
              "negative": 90,
              "tp": 0,
              "fp": 2,
              "fn": 0,
              "tn": 88,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.9777777777777777
            },
            "more-051": {
              "n": 89,
              "positive": 47,
              "negative": 42,
              "tp": 26,
              "fp": 0,
              "fn": 21,
              "tn": 42,
              "precision": 1.0,
              "recall": 0.5531914893617021,
              "f1": 0.7123287671232876,
              "accuracy": 0.7640449438202247
            },
            "more-055": {
              "n": 96,
              "positive": 26,
              "negative": 70,
              "tp": 9,
              "fp": 0,
              "fn": 17,
              "tn": 70,
              "precision": 1.0,
              "recall": 0.34615384615384615,
              "f1": 0.5142857142857142,
              "accuracy": 0.8229166666666666
            },
            "more-059": {
              "n": 92,
              "positive": 69,
              "negative": 23,
              "tp": 51,
              "fp": 11,
              "fn": 18,
              "tn": 12,
              "precision": 0.8225806451612904,
              "recall": 0.7391304347826086,
              "f1": 0.7786259541984732,
              "accuracy": 0.6847826086956522
            },
            "more-101": {
              "n": 94,
              "positive": 0,
              "negative": 94,
              "tp": 0,
              "fp": 2,
              "fn": 0,
              "tn": 92,
              "precision": 0.0,
              "recall": null,
              "f1": 0.0,
              "accuracy": 0.9787234042553191
            },
            "more-102": {
              "n": 94,
              "positive": 94,
              "negative": 0,
              "tp": 41,
              "fp": 0,
              "fn": 53,
              "tn": 0,
              "precision": 1.0,
              "recall": 0.43617021276595747,
              "f1": 0.6074074074074074,
              "accuracy": 0.43617021276595747
            },
            "more-103": {
              "n": 93,
              "positive": 93,
              "negative": 0,
              "tp": 47,
              "fp": 0,
              "fn": 46,
              "tn": 0,
              "precision": 1.0,
              "recall": 0.5053763440860215,
              "f1": 0.6714285714285714,
              "accuracy": 0.5053763440860215
            },
            "more-106": {
              "n": 95,
              "positive": 37,
              "negative": 58,
              "tp": 14,
              "fp": 0,
              "fn": 23,
              "tn": 58,
              "precision": 1.0,
              "recall": 0.3783783783783784,
              "f1": 0.5490196078431373,
              "accuracy": 0.7578947368421053
            }
          }
        },
        "closed": {
          "union": {
            "n": 743,
            "positive": 366,
            "negative": 377,
            "tp": 191,
            "fp": 0,
            "fn": 175,
            "tn": 377,
            "precision": 1.0,
            "recall": 0.5218579234972678,
            "f1": 0.6858168761220825,
            "accuracy": 0.7644683714670256
          },
          "by_recording": {
            "HeroesOldenEra-2026-09-02-21-49-22": {
              "n": 367,
              "positive": 142,
              "negative": 225,
              "tp": 4,
              "fp": 0,
              "fn": 138,
              "tn": 225,
              "precision": 1.0,
              "recall": 0.028169014084507043,
              "f1": 0.0547945205479452,
              "accuracy": 0.6239782016348774
            },
            "ScreenRecording-2026-08-22-214131": {
              "n": 376,
              "positive": 224,
              "negative": 152,
              "tp": 187,
              "fp": 0,
              "fn": 37,
              "tn": 152,
              "precision": 1.0,
              "recall": 0.8348214285714286,
              "f1": 0.9099756690997567,
              "accuracy": 0.901595744680851
            }
          },
          "by_frame": {
            "more-049": {
              "n": 90,
              "positive": 0,
              "negative": 90,
              "tp": 0,
              "fp": 0,
              "fn": 0,
              "tn": 90,
              "precision": null,
              "recall": null,
              "f1": null,
              "accuracy": 1.0
            },
            "more-051": {
              "n": 89,
              "positive": 47,
              "negative": 42,
              "tp": 3,
              "fp": 0,
              "fn": 44,
              "tn": 42,
              "precision": 1.0,
              "recall": 0.06382978723404255,
              "f1": 0.12,
              "accuracy": 0.5056179775280899
            },
            "more-055": {
              "n": 96,
              "positive": 26,
              "negative": 70,
              "tp": 0,
              "fp": 0,
              "fn": 26,
              "tn": 70,
              "precision": null,
              "recall": 0.0,
              "f1": 0.0,
              "accuracy": 0.7291666666666666
            },
            "more-059": {
              "n": 92,
              "positive": 69,
              "negative": 23,
              "tp": 1,
              "fp": 0,
              "fn": 68,
              "tn": 23,
              "precision": 1.0,
              "recall": 0.014492753623188406,
              "f1": 0.02857142857142857,
              "accuracy": 0.2608695652173913
            },
            "more-101": {
              "n": 94,
              "positive": 0,
              "negative": 94,
              "tp": 0,
              "fp": 0,
              "fn": 0,
              "tn": 94,
              "precision": null,
              "recall": null,
              "f1": null,
              "accuracy": 1.0
            },
            "more-102": {
              "n": 94,
              "positive": 94,
              "negative": 0,
              "tp": 94,
              "fp": 0,
              "fn": 0,
              "tn": 0,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-103": {
              "n": 93,
              "positive": 93,
              "negative": 0,
              "tp": 93,
              "fp": 0,
              "fn": 0,
              "tn": 0,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-106": {
              "n": 95,
              "positive": 37,
              "negative": 58,
              "tp": 0,
              "fp": 0,
              "fn": 37,
              "tn": 58,
              "precision": null,
              "recall": 0.0,
              "f1": 0.0,
              "accuracy": 0.6105263157894737
            }
          }
        },
        "boundary": {
          "union": {
            "n": 743,
            "positive": 366,
            "negative": 377,
            "tp": 364,
            "fp": 0,
            "fn": 2,
            "tn": 377,
            "precision": 1.0,
            "recall": 0.994535519125683,
            "f1": 0.9972602739726028,
            "accuracy": 0.9973082099596231
          },
          "by_recording": {
            "HeroesOldenEra-2026-09-02-21-49-22": {
              "n": 367,
              "positive": 142,
              "negative": 225,
              "tp": 140,
              "fp": 0,
              "fn": 2,
              "tn": 225,
              "precision": 1.0,
              "recall": 0.9859154929577465,
              "f1": 0.9929078014184397,
              "accuracy": 0.9945504087193461
            },
            "ScreenRecording-2026-08-22-214131": {
              "n": 376,
              "positive": 224,
              "negative": 152,
              "tp": 224,
              "fp": 0,
              "fn": 0,
              "tn": 152,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            }
          },
          "by_frame": {
            "more-049": {
              "n": 90,
              "positive": 0,
              "negative": 90,
              "tp": 0,
              "fp": 0,
              "fn": 0,
              "tn": 90,
              "precision": null,
              "recall": null,
              "f1": null,
              "accuracy": 1.0
            },
            "more-051": {
              "n": 89,
              "positive": 47,
              "negative": 42,
              "tp": 47,
              "fp": 0,
              "fn": 0,
              "tn": 42,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-055": {
              "n": 96,
              "positive": 26,
              "negative": 70,
              "tp": 26,
              "fp": 0,
              "fn": 0,
              "tn": 70,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-059": {
              "n": 92,
              "positive": 69,
              "negative": 23,
              "tp": 67,
              "fp": 0,
              "fn": 2,
              "tn": 23,
              "precision": 1.0,
              "recall": 0.9710144927536232,
              "f1": 0.9852941176470589,
              "accuracy": 0.9782608695652174
            },
            "more-101": {
              "n": 94,
              "positive": 0,
              "negative": 94,
              "tp": 0,
              "fp": 0,
              "fn": 0,
              "tn": 94,
              "precision": null,
              "recall": null,
              "f1": null,
              "accuracy": 1.0
            },
            "more-102": {
              "n": 94,
              "positive": 94,
              "negative": 0,
              "tp": 94,
              "fp": 0,
              "fn": 0,
              "tn": 0,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-103": {
              "n": 93,
              "positive": 93,
              "negative": 0,
              "tp": 93,
              "fp": 0,
              "fn": 0,
              "tn": 0,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            },
            "more-106": {
              "n": 95,
              "positive": 37,
              "negative": 58,
              "tp": 37,
              "fp": 0,
              "fn": 0,
              "tn": 58,
              "precision": 1.0,
              "recall": 1.0,
              "f1": 1.0,
              "accuracy": 1.0
            }
          },
          "colors": {
            "green": {
              "n": 743,
              "positive": 352,
              "negative": 391,
              "tp": 340,
              "fp": 0,
              "fn": 12,
              "tn": 391,
              "precision": 1.0,
              "recall": 0.9659090909090909,
              "f1": 0.9826589595375722,
              "accuracy": 0.9838492597577388
            },
            "yellow": {
              "n": 743,
              "positive": 95,
              "negative": 648,
              "tp": 31,
              "fp": 21,
              "fn": 64,
              "tn": 627,
              "precision": 0.5961538461538461,
              "recall": 0.3263157894736842,
              "f1": 0.4217687074829932,
              "accuracy": 0.8855989232839838
            }
          }
        }
      },
      "all_positive": {
        "n": 743,
        "positive": 366,
        "negative": 377,
        "tp": 366,
        "fp": 377,
        "fn": 0,
        "tn": 0,
        "precision": 0.49259757738896365,
        "recall": 1.0,
        "f1": 0.6600541027953111,
        "accuracy": 0.49259757738896365
      },
      "coverage": {
        "scored_cells": 743,
        "total_cells": 1096,
        "unknown_cells": 353,
        "fraction": 0.6779197080291971
      }
    }
  },
  "diagnostic_figures": [
    {
      "filename": "highlight-process-source.jpg",
      "development_frame": "more-001",
      "source": "local_data/perception/video-corpora/all-recordings-two-level-2026-09-03/frames/HeroesOldenEra-2026-08-31-23-00-07/t0000410031ms.jpg",
      "title": "① 原始截图：边界有颜色，区域内部仍是地面",
      "caption": "开发示例 more-001；保留完整战场画面。"
    },
    {
      "filename": "highlight-process-boundaries.jpg",
      "development_frame": "more-001",
      "source": "local_data/perception/video-corpora/all-recordings-two-level-2026-09-03/frames/HeroesOldenEra-2026-08-31-23-00-07/t0000410031ms.jpg",
      "title": "② 提取并对齐到网格的黄色、绿色边界",
      "caption": "仅显示算法接受的边；背景调暗以便看清线条，并非原图。"
    },
    {
      "filename": "highlight-process-regions.jpg",
      "development_frame": "more-001",
      "source": "local_data/perception/video-corpora/all-recordings-two-level-2026-09-03/frames/HeroesOldenEra-2026-08-31-23-00-07/t0000410031ms.jpg",
      "title": "③ 多方向投票得到区域内的格子",
      "caption": "青色为黄绿并集预测；这是完整输出，并非逐格真值或移动合法性。"
    }
  ],
  "label_status": "assistant_visual_draft_owner_review_pending",
  "target": "Visible clear-ground membership in yellow/green outlined regions; not allegiance or movement legality.",
  "unknown_policy": "Only explicit positives and negatives scored. All omitted cells remain unknown.",
  "selection_note": "24 deliberately selected screenshots from six new recordings; two recordings per partition. Historical40 are development evidence."
}
