기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하십니까?

 

ARM NEON을 이용하여 코드 최적화를 진행하는 도중에 난관에 부딪쳐서 문의드립니다. 

 

우선 ARM NEON intrinsic function set을 이용하여  카메라로부터 YUV4:2:0 데이터를 받아

 

RGB24 데이터로 변환하여 프리뷰를 띄우는 과정은 테스트 완료 하였습니다.

 

테스트 결과 최적화를 더 수행해야 겠습니다만,

 

순수 NDK(c code)만 사용한 경우보다 디스플래이 실행속도가 약 1.7배정도 빨라지는 것을 확인하였습니다.

 

그런데 영상처리 분야에서는  LUT(LookUp table) 연산을 종종 사용하게 됩니다.

 

ARM NEON의 white paper를 보니 간접 주소 지정(LUT 연산), 즉 스캐터(scatter)와 수집(gather)을 할 수 없다고 나와 있습니다.

 

아래 코드를 보시면 스캐터와 수집에 대한 이해가 빠르실 것 같습니다.

 

float a[99], b[99];
int ia[99], ib[99], i, n, j;

......

for (i = 0; i < n; i++) a[ia[i]] = b[j + ib[i]];

 

현재 문제점은ARM  NEON에서 직접적으로 간접 주소 지정을 할 수 없다면  우회적인 방법으로 간접 주소 지정(LUT 연산)을 할 수 있는 지가 궁금합니다.

 

혹시 위의 LUT 연산을 NEON에서 수행해 보신 경험이 있는 분이 계시다면 좋은 조언 좀 부탁드리겠습니다.

 

감사합니다.

 

좋은 주말 보내십시오.

 

List of Articles
번호 제목 글쓴이 날짜 조회 수

사용자 로그인