http://sapeyes.blog.me/70112636840


LUT (Lookup Table) 룩업테이블 

2011/07/03 23:11

복사http://sapeyes.blog.me/70112636840


영상처리 기법에서 주로 사용되는 알고리즘인 룩업테이블을 알아본다.


1. 룩업테이블이란?


  룩업테이블은 주어진 연산에 대해 미리 계산된 결과들의 집합(배열)을 가리킨다. 이 집합(배열)은 주어진 연산에 대한 결과를 계산하는 시간보다 더 빠르게 값을 취득해 갈 수 있도록 사용되는 레퍼런스로 사용된다. 


 LUT는 주로 실시간 데이터 취득, 실시간 프로세싱 시스템 (embedded system)에서 사용된다. 이러한 시스템에서는 시간내에 연산 결과 취득에 대한 요구사항이 매우 높기 때문이다. 한가지 고려해야 할 점은 LUT는 배열을 최초 초기화 할때에는 연산량이 매우 많다는 점이다. 실시간 시스템에서는 이러한 초기화에서 딜레이가 일어나는 것 정도는 어느정도 감수해 주기 때문에 LUT가 사용되는 빈도가 높다. 


2. LUT 예제


 LUT에 대해 예를 들어본다. 심플하게, 실시간 데이터 취득을 고려해본다. 8비터 숫자로 데이터가 취득되고 있다고 가정해보자. 그리고 이 데이터들은 양수 (0~255)이다. 실시간 시스템은 데이터의 근(root)를 얻는 연산을 필요로 한다. C에서는 해당 연산에 대한 LUT를 다음과 같이 계산할 수 있다.


double LUT_sqrt[256];   /* 미리 전역변수로 선언해야 다른데서 쓰겠죠? */


/* 초기화 코드 부분을 이정도에 넣어야 겠죠? */

for (i=0; i<256; i++)

LUT_sqrt[i] = sqrt(i);   // math.h의 sqrt함수를 사용합시다.


/* 이부분은 실시간 시스템에서 데이터 변환 하는 곳이라고 봅시다. */


result = LUT_sqrt[sample];  /* sqrt(sample) 대신에 사용함으로써 시간 절약됩니다 */


3. 요약


 - 룩업테이블은 결과값을 가진 배열이다.

 - 룩업테이블 배열의 인덱스는 입력값이다. 배열의 값은 출력값이다.

 - 실시간 시스템에서 사전 초기화 모듈이 있는 경우 사용하면 좋다. 


4. 추가적으로 공부해야 할 부분


 - 인덱스에 들어가는 데이터 값이 소수라면 LUT를 사용할 수 있는가? 답은 YES. 


#참조 

http://www.mochima.com/articles/LUT/LUT.html#what_is_a_LUT


written by chim

반응형

'알고리즘 & 자료구조 > 알고리즘&자료구조' 카테고리의 다른 글

Hash Functions (continued) - Fowler/Noll/Vo Hash  (0) 2013.06.04
해쉬함수  (0) 2013.05.23
메모리 폴  (0) 2013.05.12
AVL트리(Adelson-Velskii / Landis)  (0) 2013.04.14
K-d 트리  (0) 2013.04.14

+ Recent posts