Camera Frame과 Frame Rate
해상도와 촬영 간격을 정하려면 저장량·관측 범위·Frame Rate의 교환 관계를 알아야 합니다.
실습 전에
01 해상도를 높이면 저장량은 얼마나 늘까요?
설명
압축 전에는 가로×세로×채널×채널당 Byte에 비례합니다.
02 요청한 FPS와 실제 기록 FPS는 왜 다를까요?
설명
노출·획득·변환·저장에 걸리는 시간과 실행 환경의 영향을 받습니다. Timestamp로 측정합니다.
실행 조건
입력: 생성 영상과 Timestamp. 실제 촬영 예제는 Raspberry Pi OS의 Picamera2를 사용합니다. OS에 없는 경우 터미널에서 sudo apt install python3-picamera2.
1. 영상 크기와 메모리
시작 조건
제공 NumPy 코드가 만드는 120×160×3 uint8 RGB 영상을 사용합니다.
진행 방법
- 크기·채널·자료형·nbytes를 기록하세요.
- [::2,::2]로 축소한 영상과 원본을 나란히 표시하세요.
- 공간 크기 비와 저장 배열 byte 수의 비를 비교하세요.
남길 결과
기록 항목과 확인할 점
- 영상
-
- shape
-
- dtype
-
- 배열 byte 수
-
- 원본 대비 비
-
확인할 점
- 배열 byte 수를 JPEG 파일 용량이라고 부르지 않았는가?
- 두 축을 절반으로 줄였을 때 픽셀 수가 어떻게 달라지는지 확인했는가?
2. Timestamp에서 Frame Rate 계산
시작 조건
획득 s를 사용합니다.
진행 방법
np.diff(timestamp)로 다섯 Frame 간격을 구하세요. 관측 FPS는 이 다섯 간격의 평균을 구한 뒤 그 역수로 계산하세요.- 각 간격을 비교기준 s와 나란히 적고, 가장 긴 간격의 시작·끝 시각을 표시하세요. 구간 번호를 x축, Frame 간격 [s]를 y축으로 그리세요.
- 요청값으로 가정한 30 FPS, 계산한 관측 FPS, 시간 기록에 들어 있는 Frame 수를 서로 다른 항목으로 적으세요.
남길 결과
기록 항목과 확인할 점
- 구간
-
- Δt [s]
-
- 구간별 1/Δt [Hz]
-
- 지연 관찰
-
확인할 점
- 전체 Frame 수를 마지막 timestamp로 단순히 나눈 값과 구간 기반 값을 구분했는가?
- timestamp 단위를 확인했는가?
3. 관심 영역과 설정 선택
시작 조건
원본 frame의 row=20:80, col=40:120을 ROI로 선택하고 전체 축소 영상과 비교합니다.
진행 방법
- ROI 좌표·크기와 전체 축소 크기를 기록하세요.
- 둘이 보존하는 시야와 세부 정보의 차이를 설명하세요.
- 실제 Camera Frame과 Frame Rate가 있으면 같은 원리로 촬영한 한 장을 추가하고 backend·해상도를 기록하세요.
남길 결과
기록 항목과 확인할 점
- 방법
-
- 영역·해상도
-
- 보존한 시야
-
- 남은 세부 정보
-
확인할 점
- NumPy row·column과 영상 x·y를 구분했는가?
- 실물 촬영을 추가한 경우에만 장치 결과라고 명시했는가?