이벤트 카메라의 검출선은 입자의 가로 단면을 시간에 따라 관찰합니다. 같은 입자가 여러 선을 지나는 기록에서 이동속도를 추정하면, 각 선에 남은 시간 정보를 이동 거리로 바꿔 2차원 윤곽을 복원할 수 있습니다. Prophesee의 Particle Size Measurement, 줄여서 PSM은 이 원리로 입자의 크기를 픽셀 단위로 추정합니다. 선을 통과한 횟수를 세는 것에서 한 단계 더 나아가, 어떤 모양이 얼마나 빠르게 지나갔는지를 함께 푸는 방식입니다.
한 줄의 기록에서 세로 길이가 생기는 과정
Metavision의 Python PSM 설명은 입자가 위에서 아래로 선형 이동하며, 각 입자의 속도가 일정하고 관측 구간에서 회전이 작다는 조건을 둡니다. 알고리즘은 검출선마다 이벤트가 생긴 가로 위치를 모으고, 이어진 구간을 하나의 클러스터로 읽습니다. 입자가 선을 완전히 통과하면 가로 양끝 위치와 관찰 시각이 남습니다.
가로 폭은 선 위에서 직접 읽을 수 있습니다. 세로 방향은 다릅니다. 입자가 선에 처음 나타난 때와 사라진 때의 차이만으로는 길이를 알 수 없습니다. 작은 입자가 천천히 지나간 것인지, 긴 입자가 빠르게 지나간 것인지 구별하려면 속도가 필요합니다.
그래서 다음 선에서도 같은 입자를 찾아 연결합니다. 선 사이의 위치 차이와 통과 시간으로 선형 이동을 추정한 뒤, 각 관찰 시각을 이동 거리로 바꿉니다. 공식 설명은 이를 고정된 물체를 일정한 속도로 움직이는 선으로 훑는 상황에 비유합니다.
가상의 단순한 예를 들어 보겠습니다. 같은 입자가 20픽셀 떨어진 두 선 사이를 4ms 동안 이동했다면 평균 이동속도는 5픽셀/ms입니다. 한 선을 덮고 있던 시간이 3ms라면 그 방향의 길이를 15픽셀로 해석할 수 있습니다. 이 계산은 시간에서 거리로 바꾸는 원리를 보여 줍니다. 실제 PSM의 최종 크기는 이렇게 구한 세로 길이 하나가 아니라, 여러 선에서 복원한 윤곽을 합친 뒤 주된 방향을 따라 계산한 픽셀 크기입니다.
이 때문에 입자가 선 사이에서 크게 회전하면 문제가 달라집니다. 첫 선에서 본 넓은 면과 다음 선에서 본 좁은 면이 같은 윤곽의 반복 관측이 아니게 됩니다. 속도가 크게 바뀌어도 일정한 속도로 시간축을 늘여 만든 형상이 실제와 어긋날 수 있습니다. 속도와 자세 조건은 부가적인 주의문이 아니라 복원 계산의 전제입니다.
이벤트를 모으는 시간과 윤곽을 읽는 간격
PSM에는 비슷해 보이는 시간 설정 두 개가 있습니다. accumulation time은 한 번의 처리에 모아 쓰는 이벤트의 시간 폭이고, precision time은 검출선을 다시 처리하는 간격입니다. 둘을 같은 값으로 고정하면 이벤트가 충분히 모이는 것과 윤곽을 촘촘히 관찰하는 것을 동시에 맞추기 어렵습니다.
공식 문서의 비교는 다음과 같습니다. 아래 숫자는 문서가 원리를 보여 주기 위해 사용한 설정입니다.
| 누적 시간 | 처리 간격 | 검출선이 보는 기록 |
|---|---|---|
| 800μs | 800μs | 이벤트가 충분히 모이지만 윤곽을 관찰하는 시점이 성김 |
| 200μs | 200μs | 자주 관찰하지만 한 번에 모인 이벤트가 희박하고 잡음에 민감할 수 있음 |
| 800μs | 200μs | 최근 800μs의 이벤트를 사용해 200μs마다 처리하는 겹치는 시간 창 |
마지막 방식은 긴 창을 네 번 따로 세는 것이 아닙니다. 겹치는 이벤트 창으로 이동 중인 윤곽을 더 자주 갱신하는 것입니다. 문서에서는 처리 사이에 입자가 대략 한 픽셀 이동하도록 간격을 잡는 관계를 설명합니다. 빠르게 움직이는 입자라면 같은 간격 동안 더 멀리 가므로 윤곽 관측이 듬성듬성해집니다.
누적 시간을 계속 늘리는 것도 해결책은 아닙니다. 문서에 따르면 지나치게 짧으면 입자의 흔적이 잘 드러나지 않고, 너무 길면 입자가 실제보다 크게 보일 수 있습니다. 처리 간격을 아주 짧게 하면 계산량도 늘어납니다. 따라서 원본 이벤트에서 윤곽이 희박한지, 관찰 시점 사이의 이동이 너무 큰지를 먼저 나누어 보면 어느 시간 설정이 문제인지 판단하기 쉽습니다.
모래시계 모양과 검출선 수가 추적을 바꾼다
검출선은 연결된 이벤트 구간의 폭을 보고 작은 구간을 잡음으로 제외합니다. min-cluster-size는 그 최소 폭을 정하는 값입니다. 이미 추적하던 입자의 폭이 이 값 아래로 줄어들면, 입자가 선을 다 지나갔다고 판정하는 데도 사용됩니다.
그래서 가운데가 가는 모래시계 모양은 단순한 원형 입자와 다릅니다. 허리 부분이 임계값보다 가늘면 아직 같은 물체가 지나가는 중인데도 앞부분이 끝난 것으로 읽힐 수 있습니다. 임계값을 낮추면 허리를 이어 볼 여지가 생기지만 작은 잡음도 클러스터가 됩니다. 크기 설정만 바꿀 문제가 아니라, 대상 형상이 이 검출 방식과 맞는지도 살펴야 합니다.
선마다 얻은 검출을 서로 연결할 때는 예상 이동과 모양의 유사성을 사용합니다. 선을 많이 넣으면 무조건 좋아지는 구조는 아닙니다. 중간에서 추적이 끊기면 같은 입자에 여러 추정값이 생길 수 있고, 선이 너무 적으면 잘못 연결한 결과를 수정할 근거가 부족합니다. 선 간격이 너무 크면 다른 입자와 연결될 가능성이 커지고, 너무 가까우면 동시에 생기는 잡음 섞인 검출의 영향을 받습니다.
화면에 입자 둘이 가까이 지나가는 장면을 떠올려 보세요. 윗선에서 먼저 검출된 입자가 아랫선에서도 먼저 나타난다는 이동 정보와, 폭·윤곽이 비슷하다는 형상 정보를 함께 써야 합니다. 어느 선에서 검출이 사라졌는지와 어느 선에서 연결이 바뀌었는지를 보면, 크기가 갑자기 튄 원인을 복원 계산 이전의 단계에서 찾을 수 있습니다.
출력의 크기와 계수를 따로 읽는다
PSM의 LineParticleTrackingOutput에는 전역 계수뿐 아니라 입자별 궤적과 크기가 들어갑니다. 공식 문서에서 이 계수는 물체가 여러 검출선에 걸쳐 성공적으로 추적됐을 때 증가합니다. 별도의 물체 계수 샘플에 나오는 검출선별 누적값의 최댓값을 PSM의 정의로 가져오면 안 됩니다. 이름에 counter가 들어가더라도 어떤 사건을 세는지부터 다릅니다.
크기 역시 픽셀 단위 결과입니다. 렌즈와 물체까지의 거리, 영상에서의 투영 관계를 확인하지 않고 밀리미터로 읽을 수는 없습니다. 입자가 카메라 쪽으로 가까워지면 실제 크기가 같아도 영상에서 더 크게 보입니다. 이 글의 크기는 2차원 윤곽의 크기이며 입자의 3차원 부피가 아닙니다.
C++ PSM 샘플은 크기 히스토그램도 표시합니다. 분포가 넓어졌다면 실제 입자 크기 차이부터 단정하기보다 초점·거리·회전 변화, 선별 검출 단절과 추적 연결을 함께 봐야 합니다. 이벤트 센서가 밝기 변화만 기록하는 배경은 이벤트 카메라와 프레임 카메라의 차이에서 이어 볼 수 있습니다.
자료는 2026년 10월 16일 기준 Metavision SDK Docs 5.3.1의 PSM 설명을 확인했습니다. 카메라 기록이나 PSM 실행은 수행하지 않았으며, 위 20픽셀·4ms 계산은 복원 원리를 설명하는 가상 예입니다.