fullseye

oct_bscan_boundaries — OPTICS oct op

使い方

B スキャンの画像から界面を横に辿る(image2d → table)。装置の出力の図にも使える。

各界面 = 列ごとに 1 行を選ぶ道で、隣の列との行の差 ≤ max_jump_px、費用 = −(明るさの z 値)の和 + jump_penalty × |行の差| が最小のもの(動的計画法。網膜の層分割の Chiu ら 2010、塗膜の Dong ら 2016 と 同じ「最短路」の考え方の 1 本ずつ版)。mode="peak" は明るさ(界面は明るい線)、"edge" は下向きの 明るさの増え方(暗 → 明、散乱の多い層の上の面)。見つけた道の上下 min_gap_px は次の道で使わない。 探す範囲: top_px / bottom_px(数か列ごとの (W,))、または reference_rows(既に見つけた面、例えば 表面)からの相対 offset_px = (下限, 上限)。★相対で探すと、面と平行な界面に罰が掛からず、表面の傾きに 従わない平らな線 —— 自己相関のアーチファクト(層の光学厚の深さに水平に出る)—— は jump_penalty で 不利になる。行は明るさの放物線で行以下に詰める。

厚さ = 隣の界面の行の差 × um_per_px(縦の 1 画素の µm、光路)÷ n_group(層ごと、None なら光学厚)。 reference_rows を渡したときは、それを 1 本目の界面として行の表に含める。 返り値: dict(kind=”oct_boundaries”, rows (n, W)、thickness_um (n − 1, W)、mean_um、std_um、contrast)。 画像が平ら・範囲が狭すぎて道が置けないときは拒否。

ファミリ共通の入力契約(fail-closed)

optics の全 op は入力を検証してから計算する(黙って通さない):

詳しい使い方ガイド

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd

同カテゴリ(oct)

oct_design · oct_dispersion_broadening · oct_interferogram · oct_bscan_simulate · oct_from_spectra · oct_k_linearize · oct_dispersion_estimate · oct_dispersion_compensate


Provenance: octscan.py — OPTICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.