計算方法
このアプリが表示する数値の計算式・前提・閾値・バージョンの一覧です。 式の一覧は計算エンジンの Formula Registry から生成しているため、実装と食い違いません。個々のカメラの実際の入力値でのトレースは、ワークスペースでカメラを選択し 「計算根拠を表示」から確認できます。
バージョン
- アプリ
- 0.1.0
- 計算エンジン
- 0.1.0
- ルールセット
- 0.1.0
- 評価プロファイル
- 0.1.0
- データスキーマ
- 1
レポートにも同じバージョンが記録されます。式を変更した場合は式バージョンが上がり、 過去のレポートがどの版で計算されたか追えます。
閾値・仮設定値(ASSUMED)
以下は実機 PoC 前の仮設定値です。物理的に決まる値ではなく、 校正前の暫定値であることを前提に読んでください(変更禁止原則 §8-10 により、 これらはコードの一箇所にまとめてあり、画面へ直接書き込んでいません)。
| 項目 | 値 | 使いどころ |
|---|---|---|
| 要求画素密度(既定) | 100 px/m | ゾーンに個別指定がない場合のカバレッジ判定基準 |
| 品質プリセット「概況把握」 | 要求画素密度 ×0.5 | 人の在・不在や重機の動きなど、状況の大枠を掴む用途 |
| 品質プリセット「標準」 | 要求画素密度 ×1 | 服装・姿勢・保護具の有無など、通常の巡視で確認する水準 |
| 品質プリセット「詳細確認」 | 要求画素密度 ×2 | 細部の状態や表示の読み取りまで求める用途(高い画素密度が必要) |
| ゾーン優先度 REQUIRED の要求カバー率 | 95% | ゾーン判定(第2段階)の合格ライン |
| ゾーン優先度 HIGH の要求カバー率 | 80% | ゾーン判定(第2段階)の合格ライン |
| ゾーン優先度 NORMAL の要求カバー率 | 60% | ゾーン判定(第2段階)の合格ライン |
| ゾーン優先度 LOW の要求カバー率 | 30% | ゾーン判定(第2段階)の合格ライン |
| 取付「単管パイプ」の推奨高さ | 1.5〜4 m | 仮設の単管足場パイプ。控え・根がらみなしで安定して立てられる高さの目安(警告のみ・判定には使わない) |
| 取付「専用ポール」の推奨高さ | 2〜6 m | カメラ専用の自立ポール・基礎付きポール(警告のみ・判定には使わない) |
| 取付「フェンス」の推奨高さ | 1.2〜2.2 m | 仮囲い・フェンス上部への取付。フェンス高さに依存(警告のみ・判定には使わない) |
| 取付「建物壁面(低層)」の推奨高さ | 2.5〜6 m | 既存建物・現場事務所の壁面ブラケット(警告のみ・判定には使わない) |
| 取付「建物上層階・屋上」の推奨高さ | 6〜30 m | 上層階の壁面・屋上パラペット等。俯瞰配置向け(階高は現場により異なる)(警告のみ・判定には使わない) |
| PTZ ズーム遷移時間(非公表時) | 5 秒 | カタログ非公表機種の補完値。現行の静的評価では未使用 |
| プリセット公称 HFOV の許容ずれ | ±3° | カメラプリセット登録時の検算(超えると警告) |
| カバレッジのサンプル上限 | 4000 点 | 格子間隔の自動決定(0.5 / 1 / 2 / 4 m から選択) |
2D カバレッジの前提
- 上面図(2D)近似: カメラ高さ・pitch・構造物の高さ関係は考慮しない
- 品質判定は Stream 解像度基準の水平画素密度(正対近似の理論値)
- PTZ は実効向き(設置向き+現在パン)のみを評価する(可動範囲の全域は評価しない)
- パノラマ(360/180度)は水平カバー角の平均画素密度による近似(極付近の歪み・真下の死角は含まない)
- 要求画素密度の既定値は実機 PoC 前の仮設定値(ASSUMED)
これらは評価エンジンが返す前提そのもので、レポートにも同じ内容が記録されます。
計算式一覧(17 件)
Formula Registry から生成。各式の ID はレポートやトレース表示に現れる識別子と同じです。
画角
センサー実寸と焦点距離から決まる画角。歪みのないピンホールモデルで、レンズ歪みは含みません。
CAMERA_HFOVHFOV = 2 × atan(Sw / (2f))
- 入力
- sensorWidthMm, focalLengthMm
- 出力
- hfovRad
- 前提
- 歪みのないピンホールカメラモデル
- 実装
computeFov()/ 式 v0.1.0
CAMERA_VFOVVFOV = 2 × atan(Sh / (2f))
- 入力
- sensorHeightMm, focalLengthMm
- 出力
- vfovRad
- 前提
- 歪みのないピンホールカメラモデル
- 実装
computeFov()/ 式 v0.1.0
CAMERA_DFOVDFOV = 2 × atan(sqrt(Sw² + Sh²) / (2f))
- 入力
- sensorWidthMm, sensorHeightMm, focalLengthMm
- 出力
- dfovRad
- 前提
- 歪みのないピンホールカメラモデル
- 実装
computeFov()/ 式 v0.1.0
距離ごとの撮影範囲
光軸に垂直な平面での撮影幅・高さ。3D 空間全体で一定の値ではありません。
VIEW_WIDTH_AT_DISTANCEWidth = 2Z × tan(HFOV / 2), Height = 2Z × tan(VFOV / 2)
- 入力
- hfovRad, vfovRad, distanceM
- 出力
- widthM, heightM
- 前提
- 光軸に垂直な平面上の値であり、3D空間全体で一定ではない
- 実装
computeFootprintAtDistance()/ 式 v0.1.0
画素単位焦点距離
実距離と画素数を結ぶ量。品質判定では Stream 解像度で計算した fx を使います(配信で失われた画素は戻らないため)。
FOCAL_LENGTH_PX_Xfx = Nx × f / Sw
- 入力
- resolutionXPx, focalLengthMm, sensorWidthMm
- 出力
- fxPx, cxPx
- 前提
- 主点は画像中心とする
- 実装
computeIntrinsics()/ 式 v0.1.0
FOCAL_LENGTH_PX_Yfy = Ny × f / Sh
- 入力
- resolutionYPx, focalLengthMm, sensorHeightMm
- 出力
- fyPx, cyPx
- 前提
- 主点は画像中心とする
- 実装
computeIntrinsics()/ 式 v0.1.0
画素密度と判定距離
2D カバレッジの塗り分け・判定の中核。対象 1m あたり何画素が割り当たるかで判定します。
PIXEL_DENSITY_AT_DISTANCEpxPerM = fx / Z(パノラマは pxPerRadian / Z)
- 入力
- fxPx, distanceM
- 出力
- pixelDensityPxPerM
- 前提
- 正対近似。斜め視認・遮蔽は含まない / Stream 解像度基準の fx を用いる(デジタルズームは情報画素を増やさない)
- 実装
computePixelDensityPxPerM()/ 式 v0.1.0
MAX_DISTANCE_FOR_PIXEL_DENSITYZmax = fx × 1m / RequiredPxPerM
- 入力
- fxPx, requiredPxPerM
- 出力
- maximumDistanceM
- 前提
- 正対近似。遮蔽・斜め視認は含まない
- 実装
computeMaxDistanceForPixelDensity()/ 式 v0.1.0
対象物の画素数
正対近似による対象幅の画素数。正本は 3D 頂点投影です。
TARGET_PIXEL_APPROXIMATIONP ≈ fx × L / Z
- 入力
- fxPx, targetWidthM, distanceM
- 出力
- targetWidthPx
- 前提
- 正対近似。正本は3D頂点投影(projectPolygon)
- 実装
approximateTargetWidthPx()/ 式 v0.1.0
Sensor → Stream → Display
画素は段階を経るごとに減ることはあっても増えません。デジタルズーム・拡大表示は情報画素を増やさないため評価に使いません。
STREAM_PIXEL_SCALEStreamTargetPx = SensorTargetPx × StreamWidth / SensorWidth
- 入力
- sensorTargetPx, sensorResolutionPx, streamResolutionPx
- 出力
- streamTargetWidthPx, streamTargetHeightPx
- 前提
- 均等縮小。横・縦は各軸の縮小率で別々に換算する
- 実装
sensorToStreamPx()/ 式 v0.1.0
パノラマ(360度・180度)
パノラマはピンホールの画角ではなく角度あたりの画素数で評価します。切り出しても画素は増えません。
PANORAMA_PX_PER_DEGREEpxPerDegree = PanoramaWidthPx / 360
- 入力
- panoramaWidthPx
- 出力
- pxPerDegree
- 前提
- Equirectangular投影の水平方向平均値 / 総幅が360度を覆う前提。切り出し幅の算出に用いる / カバー角が360度でない機種(180度魚眼など)の評価には PANORAMA_ANGULAR_RESOLUTION を使う
- 実装
computePanoramaCrop()/ 式 v0.1.0
PANORAMA_CROP_WIDTHCropWidthPx = pxPerDegree × CropAngleDegree
- 入力
- pxPerDegree, cropFovDeg
- 出力
- cropWidthPx
- 前提
- Seam跨ぎでも有効幅は画角に比例し、画像全幅と誤計算しない
- 実装
computePanoramaCrop()/ 式 v0.1.0
PANORAMA_ANGULAR_RESOLUTIONpxPerDegree = PanoramaWidthPx / HorizontalCoverageDeg, pxPerRadian = pxPerDegree × 180 / π
- 入力
- panoramaWidthPx, horizontalCoverageDeg
- 出力
- pxPerDegree, pxPerRadian
- 前提
- Equirectangular 投影の水平方向平均値 / 180度は総幅が180度を覆う前提(360で割ると画素密度を2倍に過大評価する)
- 実装
computePanoramaAngularResolution()/ 式 v0.1.0
逆算(必要焦点距離・最大確認距離)
必要な画素数から焦点距離・距離を逆算します。遮蔽・斜め視認は含みません。
REQUIRED_FOCAL_LENGTHRequiredFocalLength = RequiredPx × Z × Sw / (Nx × L)
- 入力
- requiredPx, distanceM, sensorWidthMm, resolutionXPx, targetWidthM
- 出力
- requiredFocalLengthMm
- 前提
- 正対近似。遮蔽・斜め視認は含まない
- 実装
computeRequiredFocalLengthMm()/ 式 v0.1.0
MAXIMUM_INSPECTION_DISTANCEMaximumDistance = fx × L / RequiredPx
- 入力
- fxPx, targetWidthM, requiredPx
- 出力
- maximumDistanceM
- 前提
- 正対近似。遮蔽・斜め視認は含まない
- 実装
computeMaximumDistanceM()/ 式 v0.1.0
遮蔽
構造物を直方体として扱う安全側の近似で、対象面の可視率を求めます。
VISIBILITY_RATIOVisibilityRatio = VisibleSamples / TotalValidSamples
- 入力
- visibleSamples, totalSamples
- 出力
- visibilityRatio
- 前提
- 遮蔽物は直方体近似 / 対象面のサンプル密度に依存する近似値
- 実装
computeTargetVisibility()/ 式 v0.1.0
ゾーンのカバー率と判定
ゾーン内の格子サンプルのうち要求画素密度を満たす割合。ハードゲート不適合はこの割合で相殺されません。
ZONE_COVERAGE_RATIOQualifiedRatio = QualifiedSamples / TotalSamples、適合 = QualifiedRatio ≥ RequiredCoverageRatio
- 入力
- qualifiedSamples, totalSamples, requiredCoverageRatio
- 出力
- qualifiedRatio, zoneResult
- 前提
- 上面図(2D)近似。カメラ高さ・pitch・構造物の高さ関係は考慮しない / 優先度別の要求カバー率は実機 PoC 前の仮設定値(ASSUMED) / ハードゲート不適合はカバー率で相殺しない
- 実装
evaluatePatrolScenario()/ 式 v0.1.0
この計算が答えないこと
- 時間的なカバー状況: 「いつ・何秒間見られていたか」は評価しません。 監視者の閲覧頻度・注視時間は事前に確定できず、確定できない入力から精密な数値を出すことは 客観性の見せかけになるためです(能力は評価し、運用は評価しないという方針)
- 圧縮による画質劣化: 画素密度は「量」の指標で、 符号化による細部の劣化は含みません
- 照度・天候・逆光: 判別に大きく効きますが、本アプリは幾何・光学のみを扱います
- 必要帯域: コーデック・被写体・設定に依存するため計算せず、 計画値の宣言としてハードゲートで扱います
総合判定は実機 PoC を前提とした「候補」であり、 これだけで導入可否を確定するものではありません。