FPGA를 활용한 실시간 영상 워핑 구현 - 류정래 교수 / 서울과학기술대학교 전기정보학과
* 하드웨어 소프트웨어 통합설계 1) 소프트웨어: 하이레벨 영상처리 알고리즘(복잡한기능, 인식, 학습) 2) 하드웨어: 픽셀단위의 로우레벨 영상처리 - 각 픽셀에 대한 연산은 매우 단순 하지만 픽셀 수 만큼 반복(연산량 증가, 필터링, 위핑) - 영상워핑을 하드웨어로 처리하면 소프트웨어의 영상처리 부하를 줄이는 효과.
* 영상 워핑: 2차원 좌표 변화 - 활용분야: . 카메라 렌즈 왜곡 보정, Barrel Distortion 을 펼치는 영상 . 스테레오 매칭을 위한 영상 정렬(image rectification): 스테레오 카메라-> 캘리브레이션 -> rectification on image -> Disparity Estimation based on stereo correspondence. . 파노라믹 영상 합성을 위한 영상 스티칭(stitching): 복수의 카메라 혹은 촬영된 이미지를 파노라마 합성하는 기술. 마치 한장의 영상처럼 보이도록 함. 예) 자동차의 around view 카메라의 합성 기술 * 영상 워핑 소개1) 2차원 영상 좌표 변화(픽셀이동규칙)의 정의 - 정방향 매핑(Forward mapping): 입력 영상의 각 픽셀을 어디로 이동할까? - 역방향 매핑(Backward mapping): 출력 영상의 각픽셀을 어디서 가져올까?
2) 2차원 좌표 변환의 정의 - 정방향 매핑: (x,y)=H(u,v) - 역방향 매핑: (u,v) = H역함수(x,y) - 정방향 매핑은 이미지가 빈곳이 생기거나 중첩의 가능성이 있어서 역방향 매핑이 유리함. - 룩업테이블(Lookup Table): 좌표변환을 모든 픽셀에 대해 미리 오프라인에서 연산하여 테이블로 작성 -> 온라인에서의 연산량 축소. 아무리 복잡한 변환이더라도 동일한 연산, 테이블 저장공간 필요.
- 출력영상의 정수포인트의 메시지를 가져올 때, 입력영상의 중간포인트(부동연산지점)를 가져와야 할 경우는 보간법을 사용함.
* 컴퓨팅 이슈 1) 메모리 입출력 속도 2) 보간 이슈(interpolation)
* Issue: Memory i/o speed(메모리 입출력 속도) - 고속 고용량 메모리 디바이스: SDRAM(DDR) . 고용량 메모리 소자, 용량대비 저가, 고속 입출력 가능(순차적 입출력 burst mode의 경우에 한함. 주소를 건너뛸 경우는 속도 저하): 512바이트 1030.9MB -> 8byte 108.3MB로 85배 줄이면, 10분의 1로 떨어짐.
* 이슈 2: 보간(interpolation) - 가중 산술평균(weighted average)으로 쌍일차 보간(bilinear interpolation)을 실시함. 하드웨어 구현을 위한 고정소수점 연산 필요.
. 입력영상을 읽을 때 메모리를 건너뛰는 경우가 발생하여, 속도가 떨어짐
* 해결책1: 메모리 디바이스 선정 - 역방향 매핑 룩업테이블 방식적용의 경우 - LUT: 순차적 접근, SDRAM(Synchronous DRAM): 대용량 순차적 액세스에서 고속, 비순차적 액세스에서 저속. LUT용. 가격은 저렴 - 영상버퍼: SSRAM(Sychronous SRAM): 중간용량, 순차적/비순차적액세스에서 속도차이 비교적 적음. Image data용. 메모리당 가격이 높다.
* Sol 2-1: 영상 데이터 캐시 - 메모리 디바이스는 SDRAM만 사용. - 캐시동작이 런타입 시에 결정됨-> 복잡한 구조, 캐시 콘트롤이 쉽지 않음. Hard to implement. * Sol 2-2: 단순한 영상 데이터 캐시 - 캐시의 동작이 오프라인에서 LUT생성할 때 미리 결정. - Cache LUT: 캐시의 순차적 동작을 오프라인에서 결정하여 요약한 표. - 영상 LUT: 보간 연산을 위한 동작을 오프라인에서 결정하여 요약한 표.
<참조> Unsigned Q format(uQ[i][f]): i 정수부 bit 수, f: 소수부 bit 수