自拍距離計:數值分析成果包 資料性質:所有 results 及 filter_results 內數據均為數值模擬或計算檢查,沒有手機或真人實測。 一、重算 安裝 Python 3.12、numpy、matplotlib。 可在終端執行:python -m pip install numpy==2.3.5 matplotlib==3.10.8 然後依次執行:python run_simulation.py python run_filter_study.py 固定參數見 parameters.json;固定亂數種子 20261030,NumPy PCG64。 若版本不同,浮點末位及繪圖外觀可能略有差異。 run_simulation.py 自動建立 results,重新計算表格、圖及 checks.json。 若另有 Node.js,可執行 node check_website.mjs。 它會把 Python 結果與隨包附上的網站公式程式 website_core.mjs 比較;不是重算 Python 模擬的必要條件。 二、研究問題與結論的範圍 A:把前後兩張平行虛擬卡片的 3D 頂點投影成 2D,依像素中心是否落在卡片內計算整數寬度。 每個距離採 16 個水平次像素偏移,再交換左右位置,共 32 個設定;加入同深度對照,合共 384 個設定。 這些設定不是獨立實驗樣本。線段是取樣設定的最小—最大值,不是信賴區間。 相機 1280×720,fx=fy=1000 px;卡片 6.3×8.8 cm;中心分別在 x=−5 及 +5 cm。 卡片尺寸及相機內參只是設定值,不代表任何手機或實物測量。 沒有鏡頭畸變、影像模糊、JPEG 壓縮、光照、追蹤錯誤,也沒有真實人頭模型。 25、60 cm 的影像寬度恰為整數,這些設定下取樣偏差為零,不表示真實相機沒有誤差。 同深度對照的整數寬度仍可能因水平次像素位置而不同,不能把這種差異解讀為透視效應。 投影與解析式吻合只驗證程式的內部一致性,不是對真實物理或真人模型的獨立實驗驗證。 B:假定 C=1500 px·cm、Z0=50 cm、u_Z0=0.5 cm、u_p0=0.2 px。 σ_p 分別取 0.2、0.5、1.0 px,代表輸出虹膜直徑統計量的不確定度;不是已量得的單幀或 15 幀中位數噪聲。 輸入誤差以中心為零、在 ±5 個標準差處截斷的常態分布抽樣;截斷後標準差與標稱尺度有極小差異。 每個條件 20,000 次計算抽樣。相同抽樣編號共用校準誤差,以保留不同距離間的共同校準相關性。 後續直徑誤差與校準輸入獨立。沒有模擬影格時序或 MediaPipe 的偵測失敗。 2.5%、97.5% 分位數是指定模型下的誤差分布範圍,不能稱作手機實際準確度的 95% 信賴區間。 這些結果不能用來宣稱已達成 MAPE < 10% 的工程實測目標。 B2:假設有效尺度因子隨距離線性漂移,在 120 cm 達 ±3%,在校準點 50 cm 為零。 此為敏感度情境,並非手機自動對焦已被量得有 3% 變化。 C:ε=7.5%、k=5.4、預覽 Pmin=90 px、d=0、σ_p=0.5 px。 六個情境改變 C、Δ 與容許相對標準不確定度 δ;其餘校準設定沿用 B。 C 改變時以 p0=C/Z0 重新計算校準項 c,沒有把 c 不當固定。 校準底限超過 δ 時,程式用上限 0 作「沒有可行正距離」的內部標記,並非 0 cm 可拍攝。 單純把影像插值放大不能視為已增加有效解析度。 三、檔案及欄位 projection_all.csv:z_cm 前方距離;depth_cm 深度差;swapped 左右交換;phase_px 水平主點偏移; front_width_px/back_width_px 虛擬影像整數寬度;continuous_ratio 連續投影比;analytic_ratio 解析倍率; raster_ratio 虛擬像素倍率;raster_error_percentage_points = 100×(raster_ratio−analytic_ratio)。 projection_summary.csv:每距離 32 個設定的上下界及最大絕對偏差。 uncertainty_summary.csv:每個假設噪聲與距離的偏差、相對標準差、MAPE、誤差分位數及一階預測。 relative_sd_pct = 100×sd(Z_est)/Z_true;bias_pct = 100×mean(Z_est/Z_true−1)。 scale_drift.csv:假定有效尺度漂移下的系統偏差。 interval_summary.csv:六種假設情境的下限、像素上限、不確定度上限、校準阻擋與是否為空。 monte_carlo_draws.npz:全部計算抽樣,沒有挑選「好看」的數值;可用 numpy.load 讀取。 p_draw_px 與 Z_estimated_cm 的維度為 (3 個 σ, 7 個距離, 20000 個抽樣);對應次序在同檔案給出。 Z0_draw_cm、p0_draw_px、C_draw_px_cm 是共用的 20000 組校準抽樣。 summary.json:網站及文件使用的數值來源。 checks.json:投影、有限差分、正值及區間交集的計算檢查。 website_checks.json:網站 JavaScript 與 Python 結果的交叉檢查。 sha256.json:重現所需程式、參數和主要輸出之雜湊值。 各表的 data_source 欄保留資料類型,不與實驗記錄混用。 四、方法來源 JCGM (2008). Evaluation of measurement data — Supplement 1 to the “Guide to the expression of uncertainty in measurement” — Propagation of distributions using a Monte Carlo method. DOI: 10.59161/JCGM101-2008. 已核對 BIPM 官方說明頁;本次採固定抽樣數作探索性計算,未聲稱完成該文件的全部數值容差驗證程序。 NIST. NIST TN 1297: Appendix A. Law of Propagation of Uncertainty (1994 edition). https://www.nist.gov/pml/nist-technical-note-1297/nist-tn-1297-appendix-law-propagation-uncertainty 已核對官方網頁的一階傳播式及協方差項。 五、工作紀錄 本輪程式、計算、圖表及初步文字由 AI 協助產生並在計算環境執行;未由學生親自完成手機或真人測試。 學生原有的模型推導與原型進度依其提供的記錄敘述;後續實際修改與操作應另記錄。 不要把 20,000 次計算抽樣填作實驗次數、參與者人數或手機測試數量。 六、平滑與移動研究 D(v2.2 新增) 執行 run_filter_study.py;參數見 filter_parameters.json,種子 2026103002。 C 精確為 1500 px·cm,本組不加入校準誤差,以分離平滑的貢獻。 σ_frame=0.5 px 是單幀噪聲,不能與 B 組的輸出 σ_p 畫等號。 每個窗口含 15 幀;窗口彼此獨立,內部誤差為 rho=0、0.5、0.9 的 AR(1) 遞推。 初值及創新項由 ±5 SD 截斷常態抽樣;截斷造成的微小變異變化已納入協方差核對。 每條件 20000 個窗口,均值/中位數/末幀參考共用輸入;不同 Z 和有無異常值亦共用基底噪聲。 恰一幀 +5 px 是人工設定的壓力情境,不代表實際發生率。靜止濾波比較未套用品質門檻。 filter_comparison.csv:Z_cm 設定距離;rho 相鄰相關;outliers_per_window 異常幀數; method 方法;output_diameter_sd_px 輸出直徑標準差;distance_bias_cm 平均距離偏差; rmse_cm 均方根誤差;rmse_mc_se_cm 為 RMSE 的蒙地卡羅標準誤近似;abs_error_q95_cm 為絕對誤差 95% 分位數。 paired_comparison.csv:同一輸入下 median15 減 mean15 的平方誤差平均差(cm²),以及計算抽樣標準誤。 filter_inputs.npz:frame_error_px 形狀為 (3 個 rho,20000 個窗口,15 幀),未混入異常值; outlier_position 形狀為 (3,20000),各窗口欲加入異常值的索引(0 至 14)。 輸入 p=C/Z+frame_error_px;有異常值情境在指定位置再加 5 px。這些是計算輸入,沒有影像檔或真人影格。 covariance_checks.csv:平均值的理論標準差與模擬標準差、經驗相鄰相關。 motion_windows.csv:無噪聲恆速移動 30 情境,含完整 15 個直徑;speed_cm_s 正值為遠離相機; current_Z_cm 當前設定距離;window_span_s 最舊至最新影格時差;mid_frame_age_s 中間時間影格年齡; median_distance_cm 中位數距離;bias_cm 對當前位置的偏差;robust_cv 為 1.4826 MAD/median; passes_stability_gate 僅表示通過 3% 波動門檻,其他臉部與姿態條件假設有效。 不包含運算、呈現延遲,沒有使用噪聲條件來修正真實相機資料。 website_filter_checks.json 是合成特徵點送入 app.mjs 實際 consume 函式所得的軟件檢查記錄。 motion_test_cases.json 是 motion_windows.csv 的便於程式讀取版本;不是額外數據。 可在整個網站 ZIP 根目錄執行 node verification/test-state.mjs 重做網站流程檢查。 filter_results/sha256.json 保存原計算程式與結果雜湊;新增的網站檢查另見根目錄 delivery_sha256.json。 方法來源:Nien-Fan Zhang (2006). Calculation of the uncertainty of the mean of autocorrelated measurements. Metrologia. DOI: 10.1088/0026-1394/43/4/S15 已核對 NIST 官方摘要 https://www.nist.gov/publications/calculation-uncertainty-mean-autocorrelated-measurements ,未核對論文全文。 本組最主要結論:中位數在所設異常值情境較有優勢;高相關性降低平滑收益;通過波動篩選不足以證明靜止。