포인트 처리_XOR연산, 룩업테이블
XOR 연산
배타적 OR (XOR) 함수는 피연산자가 동일한 경우에는 0을 출력하고 동일하지 않는 경우에는 1을 출력한다. XOR 함수는 특정한 값을 가진 화소를 발견하는 데 사용될 수 있다.
이것은 각 화소에서 지정된 값으로 XOR 연산을 수행함으로써 행해진다. 즉, 지정된 값을 가진 모든 화소는 검정색으로 설정되고 나머지 화소는 검정색 이외의 색으로 설정될 것이다.
XOR 함수는 마우스를 표시하는 커서를 그리기 위해 그래픽 시스템에서 종종 사용된다. 스크린 포인터는 커서 마스크에 일정한 모양의 1 값을 지정함으로써 생성된다. 커서 마스크와 스크린 상의 화소를 XOR하면 대응하는 화소의 컬러는 변하지만 커서 아래에 놓인 영상의 모양은 보여질 수 있다. 최상위 비트(MSB)만 XOR함으로써 중간 범위 화소값들의 대비(contrast)는 높일 수 있다.
룩업테이블
포인트 처리 알고리즘은 룩업 테이블을 이용할 경우 가장 효율적으로 실행 될 수 있다.
룩업 테이블은 배열의 인덱스로 화소값을 사용하는 배열일 뿐.
새로운 값은 배열의 인덱스에 의해 지시되는 배열의 요소이다. 새로운 영상은 각 화소에 대해 이런 작업을 반복함으로써 생성.
룩업 테이블을 사용한다면 불필요한 계산을 피할 수 있다. 예를 들어, 8비트 영상으로 작업한다면 영상의 크기와 무관하게 256개의 요소를 갖는 테이블만 필요하게 된다.
코드의 상단부에 있는 매크로 연산은 임의의 산술 연산 또는 논리 연산을 수행하도록 변경될 수 있다. 연산 후에 리턴되는 값의 범위를 체크하는 부분도 있다.
만일 리턴된 값이 255를 초과할 경우 255로 설정, 0 미만일 경우에는 0으로 설정.
그리고 입력버퍼는 출력버퍼로도 사용.
메모리 절약가능.
룩업테이블의 가장 큰 장점중 하나는 계산상의 복잡도를 줄이는 것.
만일 512 X 512 흑백 영상 안의 모든 화소에 일정한 값을 더한다면, 264,144번의 연산이 필요.
또한, 오버플로우와 언더플로우를 검사하기 위해 264,144의 두배에 해당하는 비교 연산이 필요할 것이다. 그러나 룩업테이블을 사용하면, 256개의 입력자료가 존재하므로 단지 256번의 덧셈 연산 및 비교 연산만이 필요하다.
'Computer > ETC' 카테고리의 다른 글
Thread(스레드) (0) | 2014.03.27 |
---|---|
항목4: 객체를 사용하기 전에 반드시 그 객체를 초기화하자 (0) | 2014.03.20 |
운영체제의 개요 (0) | 2014.03.12 |
회선 (0) | 2013.05.07 |
블러링 & 샤프닝 (0) | 2013.05.07 |
RGB 변환 YCbCr (0) | 2013.05.07 |
DIB (0) | 2013.05.07 |
시작 해 볼까? (0) | 2011.07.09 |