로봇 카메라 롤링셔터와 모션 블러: 움직이는 팔에서 영상 좌표가 휘는 이유

롤링셔터 왜곡은 영상의 행이 서로 다른 시각에 노출돼 한 프레임 안에 여러 카메라 자세가 섞이는 기하 오차이고, 모션 블러는 한 픽셀이 노출 시간 동안 움직인 밝기를 누적하는 흐림입니다. readout time·exposure·프레임률을 분리해 측정하고 로봇 속도·조명·트리거와 검증하는 방법을 정리합니다.

아래에서는 용어의 차이를 실제 시스템 경계, 실패 조건과 검증 순서로 나눠 살펴봅니다.

롤링셔터 왜곡과 모션 블러는 함께 보일 수 있지만 발생 시간이 서로 다르다

롤링셔터는 한 프레임의 위·아래 행이 같은 순간에 촬영되지 않아 움직이는 물체나 카메라가 행마다 다른 위치·자세로 투영되는 기하 오차입니다. 모션 블러는 각 행 또는 픽셀이 노출되는 동안 밝기가 이동 경로를 따라 누적되는 흐림입니다.

이벤트 카메라와 프레임 카메라 비교 글에서 빠른 움직임의 데이터 방식을 다뤘다면, 이 글은 일반 프레임 카메라 안에서 readout time과 exposure가 로봇 좌표를 어떻게 다르게 망가뜨리는지에 집중합니다.

글로벌셔터는 프레임 전체를 같은 시각에 노출하고 롤링셔터는 행을 순서대로 시작한다

Basler의 CMOS 롤링셔터 설명처럼 롤링셔터 센서는 행을 순차 노출·읽기 때문에 처음 행과 마지막 행의 촬영 시각이 다릅니다. 글로벌셔터는 전체 유효 영역을 같은 시각 구간에 노출해 빠른 운동의 행별 기하 차이를 줄입니다.

글로벌셔터도 노출 시간이 길면 모션 블러가 생깁니다. 따라서 shutter mode를 바꾸는 일과 exposure를 줄이는 일은 서로 다른 문제를 해결하며, 둘을 하나의 빠른 카메라 사양으로 묶지 않습니다.

항목롤링셔터글로벌셔터
노출 시작행별 순차전체 행 동시
빠른 운동기울어짐·휘어짐·wobble행별 기하 왜곡 작음
긴 exposure블러 발생블러 발생
주요 확인값행 방향·line delay·readoutexposure·trigger 지연

휘어진 프로펠러 사진은 한 프레임에 여러 회전 각도가 섞인 결과다

사진의 프로펠러 날은 센서의 첫 행과 마지막 행을 읽는 동안 계속 회전했습니다. 각 행이 서로 다른 날 위치를 기록해 실제 강체 모양과 다른 곡선·분리된 날처럼 보입니다.

로봇 팔의 링크, 컨베이어 부품과 회전 공구도 같은 원리로 직선 모서리가 기울거나 휠 수 있습니다. 눈으로는 작은 왜곡이어도 키포인트·PnP·삼각측량에서는 체계적인 좌표 편향으로 들어갑니다.

비행 중 회전하는 프로펠러 날이 행별 촬영 시각 차이 때문에 여러 방향으로 휘어 보이는 실제 롤링셔터 사진
프로펠러 자체가 휜 것이 아니라 센서 행을 읽는 동안 날이 이동해 서로 다른 시각의 위치가 한 장에 들어온 장면입니다. 출처: Dicklyon. 라이선스: CC BY-SA 4.0. EXIF orientation normalized, center-cropped to the article image ratio, and resized; no material content altered.

readout time·exposure time·frame period를 별도 변수로 기록한다

readout time은 첫 행과 마지막 행의 촬영 시각 차이, exposure는 한 행이 빛을 누적하는 시간, frame period는 연속 프레임 시작 사이 간격입니다. 60 fps라고 해서 readout과 exposure가 모두 1/60초라는 뜻은 아닙니다.

Basler exposure time 문서처럼 카메라의 실제 exposure 동작은 sensor mode와 타이밍에 따라 달라질 수 있습니다. 데이터시트·chunk data·trigger 측정으로 세 값을 확인하고 영상 타임스탬프가 어느 시각을 뜻하는지 정의합니다.

움직이는 eye-in-hand 카메라는 한 프레임 안에서도 행마다 다른 camera pose를 가진다

로봇 손목 카메라가 회전하거나 병진하는 동안 롤링셔터를 읽으면 영상 위쪽과 아래쪽 특징이 서로 다른 base→camera 변환에서 관측됩니다. 한 프레임에 하나의 pose를 가정한 PnP·VIO·hand-eye 계산은 잔차를 렌즈 왜곡이나 특징 오차로 잘못 흡수할 수 있습니다.

VIO와 SLAM 차이 글처럼 카메라와 IMU를 함께 쓸 때는 frame timestamp만 아니라 line delay와 연속 camera trajectory 모델이 필요할 수 있습니다. 속도를 낮추거나 global shutter를 선택하는 하드웨어 해법도 함께 비교합니다.

모션 블러는 영상 속도와 노출 시간의 곱으로 픽셀 이동량을 먼저 예산화할 수 있다

노출 동안 특징이 영상에서 v 픽셀/초로 움직이면 블러 길이의 첫 근사는 v×exposure입니다. 작업이 허용할 1~2픽셀 같은 한계를 정하고 최대 로봇 속도·거리에서 필요한 exposure 상한을 계산합니다.

가까운 물체, 긴 초점거리, 빠른 회전은 같은 로봇 속도에서도 영상 속도를 키웁니다. 평균 속도만 사용하지 말고 팔 끝의 최대 각속도와 컨베이어 상대 운동, 진동 피크에서 픽셀 이동을 확인합니다.

노출을 줄이면 블러는 줄지만 광량과 SNR을 보충해야 한다

짧은 exposure는 움직임 누적을 줄이는 대신 들어오는 광자를 줄여 어두운 영상과 shot noise를 만듭니다. gain을 크게 올리면 밝아 보여도 노이즈와 포화, 특징점 불안정이 늘 수 있습니다.

조명 밝기·거리·확산·편광과 렌즈 조리개를 함께 설계하고 LED strobe를 사용할 때는 카메라 trigger와 안전·열 조건을 확인합니다. 자동 노출이 작업 중 exposure를 길게 바꾸지 않도록 범위와 로그를 고정합니다.

빠른 팔·정밀 3D·VIO에는 글로벌셔터가 유리하지만 모든 작업의 정답은 아니다

빠른 회전, stereo 동기, 구조광, 정밀 pose와 VIO처럼 행별 기하 차이가 직접 오차가 되는 작업은 global shutter가 설계를 단순화합니다. 저속 검사나 정지 촬영에서는 rolling shutter의 비용·노이즈·해상도 장점이 더 중요할 수 있습니다.

로봇 깊이 카메라 비교 글처럼 센서 원리뿐 아니라 작업 거리·조명·동기·가림과 처리량을 함께 봅니다. 셔터 방식 이름만으로 실제 readout·노출·trigger 성능을 가정하지 않습니다.

하드웨어 트리거와 타임스탬프는 프레임 시작·중간·끝 중 무엇을 가리키는지 맞춘다

여러 카메라, IMU와 로봇 관절 상태를 결합할 때 trigger 입력 시각, exposure start, 센서 readout과 드라이버가 찍은 timestamp 사이 지연을 분리합니다. rolling shutter에서는 한 프레임 대표 시각을 중간 행으로 둘지 시작 행으로 둘지 모델과 일치해야 합니다.

로봇 시간 동기화 글의 하드웨어 timestamp 원칙을 적용하고 LED flash·회전판·로봇 반복 궤적으로 실제 offset과 line delay를 측정합니다. 수신 시각을 촬영 시각으로 쓰지 않습니다.

롤링셔터 보정은 line delay와 연속 운동 모델이 맞을 때만 유효하다

CVPR 롤링셔터 카메라 보정 연구는 정확한 shutter timing 모델이 structure from motion에 필요하다고 설명합니다. 일반 intrinsic과 함께 행 간 시각 차이를 추정해야 합니다.

후처리로 휘어짐을 펴도 가려져 관측되지 않은 영역과 노출 중 블러가 자동으로 복원되지는 않습니다. 운동 모델이 틀리거나 진동이 빠르면 보정 영상이 더 왜곡될 수 있어 원본과 보정 결과의 재투영·추적 성능을 함께 비교합니다.

검증은 정지 차트 다음에 회전판·직선 모서리·실제 로봇 궤적을 사용한다

정지 차트로 intrinsic과 기본 선명도를 맞춘 뒤, 알려진 속도의 회전판과 이동 차트로 행별 기울기와 blur pixel을 측정합니다. 그 다음 실제 팔 속도·가속도·작업 거리와 조명에서 키포인트·pose·깊이 오차를 봅니다.

exposure, gain, frame rate, readout mode와 로봇 속도를 격자로 바꾸고 drop frame·열·CPU 부하도 기록합니다. 한 장의 보기 좋은 이미지보다 작업 구간 전체의 추적 유지율과 위치 오차 분포를 판정값으로 둡니다.

시험바꿀 조건확인할 값
정지 차트시야 중앙·가장자리intrinsic·기본 MTF/선명도
회전·이동 차트속도·행 방향·exposureline 왜곡·blur pixel
로봇 반복 궤적관절 속도·거리·조명재투영·pose·추적률
장시간 운영gain·온도·trigger·CPU드롭·지연·설정 변동

운영에는 이미지와 함께 shutter mode·exposure·gain·line timing과 로봇 속도를 저장한다

영상만 남기면 자동 노출이 언제 길어졌는지, readout mode가 바뀌었는지와 촬영 당시 로봇 각속도를 알기 어렵습니다. frame마다 exposure·gain·trigger counter·timestamp와 관절 pose·velocity를 같은 기록에 둡니다.

rosbag2 기록·재생 글처럼 원본 압축 방식과 드롭을 확인하고 카메라 펌웨어·드라이버·파라미터 버전을 보존합니다. 왜곡이 임계값을 넘으면 속도 제한, 재촬영 또는 작업 거부로 이어지는 규칙을 시험합니다.

shutter mode readout time exposure frame rate 조명 트리거 속도 재투영 오차와 추적률을 확인하는 카메라 점검표
정지 차트만으로 끝내지 않습니다. 실제 카메라·로봇 속도·조명과 노출 조건에서 행 왜곡과 흐림을 따로 측정합니다. 출처: 피지컬 AI Lab.

로봇 카메라 롤링셔터와 모션 블러에서 자주 묻는 질문

롤링셔터와 모션 블러는 같은 현상인가요?

아닙니다. 롤링셔터는 행마다 다른 시각의 기하 왜곡이고 모션 블러는 한 행의 exposure 동안 밝기가 이동해 흐려지는 현상입니다. 동시에 생길 수 있습니다.

프레임률을 높이면 롤링셔터가 없어지나요?

프레임 간격은 줄지만 센서의 행 readout time이 자동으로 0이 되지는 않습니다. 실제 sensor mode의 line timing을 확인해야 합니다.

글로벌셔터면 모션 블러가 없나요?

전체 행을 동시에 노출해 행별 왜곡은 줄지만 exposure가 길면 모든 픽셀에 모션 블러가 생깁니다.

노출 시간을 줄이고 gain만 올리면 되나요?

밝기는 보완되지만 노이즈·포화와 특징 불안정이 늘 수 있습니다. 조명·조리개·gain 상한과 작업 속도를 함께 설계합니다.

소프트웨어로 롤링셔터를 완전히 고칠 수 있나요?

line delay와 카메라 운동 모델이 정확하면 줄일 수 있지만 가려진 정보와 모션 블러는 복원이 제한됩니다. 원본 대비 pose·추적 성능을 실제 작업에서 검증합니다.

롤링셔터 보정이나 짧은 노출은 카메라 기반 안전 기능의 성능을 자동으로 보장하지 않습니다. 실제 센서 timing·로봇 속도·조명·진동에서 검출 지연과 오차를 검증하고 실패 시 속도 제한·재촬영·안전 계층을 별도로 둬야 합니다.