caliper op• 데이터 종류: 없음 → measurehandle(인자만으로 정해지는 연산자 —— 이미지나 데이터 입력을 받지 않습니다)
• 호출: import fullseye as fs; fs.ledger.gen_measure_rectangle2(row, col, phi, length1, length2, shape)(구현을 직접 호출하려면 import measuring1d; measuring1d.gen_measure_rectangle2(row, col, phi, length1, length2, shape), 원장에서 가져오려면 opsmeasure1d.get("gen_measure_rectangle2"))
• HALCON 대응: gen_measure_rectangle2(의미·매개변수는 HALCON 레퍼런스가 참고가 됩니다)
• GPU: 없음(CPU 참조 구현만)
회전 측정 직사각형(장축 phi 방향으로 1 px 간격으로 프로파일을 취함)을 정의한다(gen_measure_rectangle2). 샘플 수 n = max(2, round(2*length1)+1), 시작점은 중심에서 -(n-1)/2 px 위치. length2는 폭 방향의 평균화 폭 [px].
> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.
★長さの意味(2026-11-09 に実装へ合わせて明記。値は変えていない):
• length1 は半長(プロファイルは中心 ± length1)。HALCON の Length1 と同じ。
• length2 は全幅: measure_pos は法線方向の np.linspace(-w/2, w/2, max(2, w)) (w = int(length2))の w 本を平均し、w ≤ 1 なら平均しない。HALCON の Length2 は 半高(Half height of the rectangle、HALCON の reference)で、同じライブラリの gen_rectangle2_contour_xld も length2 を半幅(角が ±length2)として描く —— 同じ数字を渡すと、ここでは半分の幅しか平均しない。★HALCON の整数 offset −L2..+L2(2·L2+1 本)をそのまま作る length2 は無い: length2 = 2·L2 + 1 を渡すと本数は 2·L2+1 だが、offset は ±(L2 + 0.5) の範囲に間隔 (2·L2+1)/(2·L2) で並ぶ(L2=2 → w=5 で −2.5, −1.25, 0, 1.25, 2.5)—— 整数でなく幅も 1 画素広い。辺が測定線に直交していれば平均の結果は近いが、幅方向に構造があると別の矩形を測る。
• w が偶数のとき標本は中心の行を通らない(w=2 は offset ±1 の 2 本だけ、w=4 は ±2, ±0.67)。中心を含めたいなら奇数の w。
★角の向き: プロファイルは (row + t·sin φ, col + t·cos φ) に進む。行が下向きの画像座標で φ を時計回りに数える(φ = +π/2 は画面の下向き)。HALCON の Phi は水平からの「数学的に正」の角(gen_rectangle2 の reference)で、行が下向きの画像では反時計回り(φ = π/2 は上向き)と読める —— 符号が逆。HALCON の Phi を移すなら phi = −Phi (極性 positive/negative と並び順が HALCON と揃う)。★HALCON の実機での照合はしていない(reference の文言からの読み)。ライブラリ内では gen_rectangle2_contour_xld も同じ +sin で一貫している。
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• example_scratch_width — py -3.11 examples/example_scratch_width.py
• poc_barcode_1d — py -3.11 examples/poc_barcode_1d.py
• poc_battery_electrode_breathing — py -3.11 examples/poc_battery_electrode_breathing.py
• poc_calipers_under_illusion — py -3.11 examples/poc_calipers_under_illusion.py
• poc_dimensional_inspection — py -3.11 examples/poc_dimensional_inspection.py
• poc_screw_thread_metrology — py -3.11 examples/poc_screw_thread_metrology.py
• poc_solar_limb_darkening — py -3.11 examples/poc_solar_limb_darkening.py
• poc_telecentric_metrology — py -3.11 examples/poc_telecentric_metrology.py
• poc_tree_ring_dendro — py -3.11 examples/poc_tree_ring_dendro.py
• poc_water_level — py -3.11 examples/poc_water_level.py
• poc_weld_bead_profile — py -3.11 examples/poc_weld_bead_profile.py
• poc_weld_radiograph_porosity — py -3.11 examples/poc_weld_radiograph_porosity.py
measurehandle 를 입력으로 받는 것)translate_measure · measure_pos · measure_pairs · fuzzy_measure_pairing
caliper)gen_measure_arc · translate_measure · measure_pos · measure_pairs · fuzzy_measure_pairing
*Provenance: measuring1d.py — MEASURE1D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.