surface_params — ROUGHNESS 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 를 정의할 수 없다).

자세한 사용 가이드

• surface_roughness 패밀리 가이드

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(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)

profile_params · surface_psd


*Provenance: roughness.py — ROUGHNESS 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

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