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 [출처] LUT (Lookup Table) 룩업테이블|작성자 침 |
'알고리즘 & 자료구조 > 알고리즘&자료구조' 카테고리의 다른 글
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 |