measure op• 데이터 종류: depth → table
• 호출: import fullseye as fs; fs.ledger.surface_params(z, dx=1.0, dy=None, assume_filtered=False)(구현을 직접 호출하려면 import roughness; roughness.surface_params(z, dx=1.0, dy=None, assume_filtered=False), 원장에서 가져오려면 opsroughness.get("surface_params"))
면 거칠기 파라미터 Sa/Sq/Sp/Sv/Sz/Ssk/Sku/Sdq/Sdr(ISO 25178-2).
인수
z 대역 처리된 높이장(형상과 파상도를 제거한 것).
dx, dy 샘플 간격. dy=None 은 정사각 화소.
assume_filtered True 로 대역 검사를 건너뛴다. 기본값은 False = 검사한다.
반환값은 dict. 파라미터 9 개에 더해, 판단 근거를 숫자로 남기기 위해 band_long_wave_fraction / band_form_ptv_over_sq / n_points / assume_filtered 를 넣는다.
★ 왜 기본으로 거부하는가(실측)
512x512, dx=1 µm 의 합성 면(자기 아핀 PSD + 가공 자국 λ=32 µm + 깊은 흠집
4 개 + 파상도 λ=256 µm + 기울기 0.050/-0.025)을 절차를 바꿔 평가했다.
참값은 "흠집과 가공 자국과 PSD 를 λc=80 µm 로 자른 것":
절차 Sq Sq 오차 Sa Ssk Sku
원시 높이장 그대로 8.3057 +1931.4 % 6.9089 +0.05 2.26
최소제곱 평면만 제거 0.7520 +83.9 % 0.5273 -2.04 10.21
평면 + λc=80µm 하이패스 0.4104 +0.4 % 0.2501 -2.88 18.76
참값 0.4089 — 0.2502 -2.80 18.52
원시 rms 를 Sq 라고 부르면 20.3 배. Ssk 는 -2.80 이 +0.05 가 되어부호째 사라지고, Sku 는 18.5 가 2.26(가우스의 3 보다 아래)이 된다. 파상도와
기울기가 분포를 지배하면, 깊은 흠집의 정보가 흔적도 없이 사라진다.
평면만 제거해도 아직 1.8 배 어긋난다. "어떤 파라미터라면 안전한가"라는
도망갈 길은 없다 —— 대역을 선언하지 않은 채 낸 숫자는 파라미터의
선택으로는 구할 수 없다.
★ 검사의 내용과 임계값의 근거(실측)
증거는 2 가지. 장파장비 = 평가 길이의 1/4 보다 긴 파가 가진 분산의 비율.
형상 PTV/Sq = 최소제곱 평면 자체의 고저차를 rms 로 나눈 것.
면 장파장비 형상PTV/Sq 판정
원시 높이장 0.9714 4.62 거부
최소제곱 평면만 제거 0.4415 0.00 거부
파상도만 남긴 면(다른 면) 0.5539 0.15 거부
평면 + λc=80µm 하이패스 0.0086 0.00 통과
참값(λc=80µm) 0.0042 0.00 통과
순수 사인파 λ=32(256 각) 0.0038 0.03 통과
통과 쪽의 여유는 λc 를 어디까지 올려도 유지되는가 —— 정당한 운용에서 잘못거부되지 않는 것을 확인하는 편이 중요하므로, λc 를 바꿔 측정했다
(512², 가공 자국 + 흠집 1 개를 포함한 면):
λc 16 32 64 80 128 170 256(=L/2)
장파장비 0.0005 0.0011 0.0044 0.0085 0.0306 0.0563 0.1056
λc 를 평가 길이의 절반까지 올려도 0.106 까지밖에 오르지 않는다.
거부하고 싶은 면의 최소는 0.4415. 임계값 0.25 는 그 사이(통과 쪽의 2.4 배 위,
거부 쪽의 1.8 배 아래)에 두었다. 형상 PTV/Sq 쪽은 대역 처리된 면에서는
실측 0.001~0.03 밖에 되지 않고, 기울기가 남은 면에서는 3.46 / 4.62.
임계값 1.0 은 그 사이(통과 쪽의 33 배 위, 거부 쪽의 3.5 배 아래).
또한 이 2 가지는 or 로 판정한다 —— 기울기는 없지만 파상도가 남아 있는 면
(위 표의 "파상도만 남긴 면")은 형상 PTV 로는 잡히지 않고, 장파장비만이
울린다. 한쪽만으로는 구멍이 생긴다.
그래도 판단을 기계에 완전히 맡기지 않도록, assume_filtered=True 로
명시적으로 끌 수 있다(조용히 꺼지지는 않는다). 증거 수치 자체도
band_long_wave_fraction / band_form_ptv_over_sq 로 반환한다.
★ 함정 (a) —— Sz 는 "표면의 성질"이 아니라 "얼마나 길게 보았는가"를 측정한다
같은 샘플 간격(1 µm) 그대로 평가 창만 넓히면, Sz 는 포화하지 않고
단조롭게 증가한다(실측, 흠집을 뺀 면):
창 32² 64² 128² 256² 512²
창의 수 256 64 16 4 1
Sz평균 0.7112 0.8011 0.8693 0.9248 1.0058
실측/예측 0.5204 0.5295 0.5314 0.5287 0.5420
면적 256 배에서 +41.4 %. 예측은 가우스 극값 2√(2 ln M) · Sq.
비가 창에 관계없이 거의 일정(0.520~0.542, 평균 주변 ±2.0 %)하므로
증가 방식의 형태(영역의 로그)는 맞지만, 절댓값은 1.9 배 빗나간다 ——
면에 상관이 있어, 독립 표본의 수가 점 수 M 보다 적기 때문.
포화하지 않으므로 "진짜 Sz"는 존재하지 않는다. Sz 를 보고할 때는창의 크기와 창의 수를 반드시 덧붙인다.
★ 함정 (b) —— 샘플 간격에 대해 가장 강한 것은 Sa 가 아니라 Sq
같은 면을 점 샘플링으로 솎아내고, 매번 같은 절차(기울기 제거 → λc=80 µm 하이패스)
로 평가한, 참값에 대한 상대 오차(실측):
dx Sa Sq Sz Ssk Sku
1 µm -0.0 % +0.4 % +0.2 % +2.8 % +1.3 %
2 µm -0.1 % +0.4 % -0.2 % +3.0 % +1.4 %
4 µm -0.3 % +0.4 % -1.3 % +3.4 % +1.7 %
8 µm -3.4 % +0.6 % -19.8 % +2.3 % -3.9 %
16 µm +23.5 % +1.6 % -29.1 % -38.4 % -40.8 %
10 % 를 처음 넘는 것은 Sz 가 dx=8 µm, Sa / Ssk / Sku 가 dx=16 µm,
Sq 는 끝까지 넘지 않는다(최대 1.6 %). Sq 가 남는 것은 에일리어싱이
에너지를 접어 넣을 뿐 2 차 모멘트를 보존하기 때문. Sa 는 분포의 형태가
바뀌면 움직이고, Sz 는 "흠집의 바닥이 우연히 샘플 점에 걸리는가"로 정해지는 극값.
dx=8 µm 에서는 Sa 는 ±5 % 합격·Sz 는 불합격 —— 같은 데이터로,
어느 숫자를 보았는가만으로 결론이 뒤집힌다.
★ 함정 (c) —— Sdq / Sdr 은 샘플 간격에도 단위에도 영향을 받는다
Sdq 는 기울기의 rms, Sdr 은 전개 면적비 mean(√(1+|∇z|²)) - 1. 어느 쪽이나
중심 차분으로 계산하므로, 파장 λ 의 사인에서는 sinc(2 dx/λ) 만큼
과소하게 나온다(실측, λ=32 µm, 진폭 1, 해석값 Sdq=0.138840):
dx Sdq 실측 실측의 오차 sinc(2dx/λ) 의 예상
1 µm 0.138471 -0.27 % -0.64 %
2 µm 0.136212 -1.89 % -2.55 %
4 µm 0.126004 -9.25 % -9.97 %
8 µm 0.088388 -36.34 % -36.34 %
거칠게 잴수록 면은 매끄럽게 보인다. Sdr 쪽은 형태 자체는 올바르고,
충분히 촘촘하게 재면 해석값과 +0.116 % 로 일치한다(λ=32, dx=0.25 로 실측).
높이와 dx 의 단위가 다르면 여기만 조용히 망가진다(Sa/Sq 는
높이의 단위밖에 쓰지 않으므로 알아챌 수 없다).
가장자리 1 행 1 열은 한쪽 차분이 되므로 평가에서 제외하고 있다.
fail-closed(실패 시 거부)
• 2 차원이 아님 / 8x8 미만 / NaN·Inf 를 포함.
• dx 나 dy 가 양수가 아니거나 유한하지 않음.
• 대역 처리된 것으로 보이지 않는다(assume_filtered=False 일 때).
• 모든 점이 같은 높이(Sq=0 이라 Ssk/Sku 를 정의할 수 없다).
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• poc_polish_wipe_measure — py -3.11 examples/poc_polish_wipe_measure.py
• poc_surface_roughness — py -3.11 examples/poc_surface_roughness.py
table 를 입력으로 받는 것)—
measure)*Provenance: roughness.py — ROUGHNESS 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.