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
[출처] LUT (Lookup Table) 룩업테이블|작성자 침
'메모' 카테고리의 다른 글
파일질라 ftp 서버 만들기...펌 (0) | 2013.05.11 |
---|---|
윈도우7 ftp서버 설정...펌 (0) | 2013.05.11 |
roi region of interest...펌 (0) | 2013.05.10 |
qa quality assurance, 품질보증을 얻는데 필요한 모든 작업...펌 (0) | 2013.05.10 |
AE, application entiy...dicom에서...펌 (0) | 2013.05.07 |