728x90
반응형

참고자료 1 : http://kowon.dongseo.ac.kr/~dkkang/ImageProcessing2011Spring/ch12.pdf

참고자료 2 : http://realheart.egloos.com/2193436

참고자료 3 : http://alzi.tistory.com/83

참고자료 4 : https://courses.cs.washington.edu/courses/cse576/book/ch7.pdf (TEXT BOOK)

참고자료 5 : http://icact.org/upload/2011/0702/20110702_Abstract_B.pdf (논문)



공간 필터링 (Spatial Filtering) / 영상 회선(Convolution) /  Laws Texture Energy Measures



필터링(Filtering)

  일단, 필터링(Filtering)의 개념부터 알아보자. 필터란 입력되는 신호의 일부 성분을 제거하거나 일부 특성을 변경하려고 설계된 하나의 시스템이다. 필터 종류로는 크게 두가지가 있는데 유한 임펄스 응답(Finite Impulse Response:FIR)필터, 무한 임펄스 응답(Infinite Impulse Response : IIR) 필터가 있다. 유한 임펄스 응답 필터는 필터의 길이가 한정되있으며, 설계가 쉽고 신호도 쉽게 처리할 수 있다. 무한임펄스 응답 필터는 필터의 길이가 무한정한 필터를 뜻하며 설계가 어렵고 처리하기도 어렵다. 하지만 필터의 특성이 우수하다는 특징이 있다. 영상처리에서는 효과적인 필터링의 특성을 만족하면서 선형 시불변 시스템의 특성도 만족하는 FIR 필터를 많이 사용하는 편이다. 


Convolution (회선)

  컨벌루션은 임의의 디지털 신호 x[n]이 선형 시불변 시스템인 FIR 필터에 입력되어 원하는 출력 y[n]을 만드는 과정을 뜻한다. 값 3개의 평균을 구하는 입출력 관계식은 다음과 같다. 다음과 같은 식을 이용하여 주어진 입력 x[n]에서 출력y[n]을 구하여 영상처리 마스크를 씌우는데 이용하게 된다. 


[그림1] Convolution 관계식


  필터링을 이용한 영상처리는 2차원의 Convolution을 수행하게 된다. 영상의 공간 필터링은 크기가 M x N 인 FIR 필터 마스크 h[x, y]와 크기가 M  x N 인 영상 간에 2차원 Convolution을 수행하는것이다. 사용되는 필터 마스크를 컨벌루션 마스크 또는 회선 마스크라고 한다. 회선 마스크가 더 익숙한 듯 하다. N x N 회선 마스크는 폭이 N이고 서로 직교하는 1차원 마스크 두 개를 곱하여 생성하는 것이다.


[그림 2] 2차원의 Convolution, 컨벌루션 마스크 (회선 마스크)


  회선 처리를 이용한 영상의 필터링 과정은 다음과 같다. 벡터요소가 있는 마스크를 영상의 적용하여 부가적인 요소를 더한 새로운 영상을 만들어내는 과정이다. 마스크와 해당 이웃 화소의 모든 곱을 합하여 출력화소를 만드는 작업이라고 할 수 있다. 원 영상에 특정한 마스크(Mask, Window or Kernel)를 씌워 Convolution 연산을 수행함으로써 각 픽셀의 값들을 결정하는 방법이다. 


[그림 3] 회선처리를 이용한 영상의 필터링 과정



[그림 3-1] 회선 마스크 적용 방법


  회선 마스크를 적용하는 데 있어서 마스크를 원영상 위로 쭉 쉬프트 시켜가면서 위의 연산을 수행하게 된다. 중앙에 처리 값이 저정되므로 반드시 마스크는 홀수x홀수의 형태를 가지게 된다. 이렇게 마스크를 처리하게 된다면 3x3 마스크를 사용하는 경우 외곽의 한 줄은 처리한 값이 존재하지 않게 된다. 5x5 마스크는 외곽에 두 줄이 비게 된다. 이런 문제를 보완하는 방법으로 처리값이 없는 부분은 0, 255 값들과 같은 방식으로 채워버리거나, 주위 픽셀과 동일한 값이나 비슷한 값으로 처리하는 방법이 있다. (보간법) 





공간 필터링 (Spatial Filtering)

  공간 필터링이란 영상 신호에 대하여 공간 영역(Spatial Domain)에서의 필터 처리를 의미한다. 영상에 있는 공간 주파수 대역을 제거하거나 강조하는 필터처리이며, 사용되는 필터의 계수에 따라 특정 주파수를 제거하거나 강조하므로, 필터 마스크 또는 회선 마스크의 가중치 선택이 공간 필터의 결과를 결정하게 된다. 특히나 영상처리에서는 홀수 차원의 정방형 마스크가 사용된다.


  공간 필터링 연산은 세가지가 있다. 저주파 성분을 남기고 고주파 성분을 제거하는 저주파 통과 필터링, 고주파 성분을 남기고 저주파 성분을 제거하는 고주파 통과 필터링, 경계선을 검출할 수 있는 엣지 강화 필터가 있다. 



저주파 통과 필터링(Low-Pass Filter)

  저주파 통과 필터링은 신호 성분 중 저주파 성분은 통과시키고 고주파 성분은 차단하는 필터이다. 잡음을 제거하거나 흐릿한 영상을 얻을 때 주로 사용되는 필터이다. 고주파 성분을 제거하므로 고주파 차단 필터라고도 한다. 저주파 통과 필터링의 마스크는 모든 계수가 양수이고 전체 합이 1인 마스크가 사용된다. 저주파 통과 필터 마스크는 다음과 같은 형태이다.

[그림 4] 저주파 통과 필터 마스크


가우시안 필터는 가우시안 함수를 표본화 하여 마스크의 계수를 결정하게 된다.



고주파 통과 필터링(High-Pass Filter)

  신호 성분 중 고주파 성분은 통과시키고 저주파 성분은 차단하는 필터를 말한다. 저주파 성분을 차단하므로 저주파 차단 필터라고도 한다. 고주파 통과 필터링은 영역 처리에서 배운 샤프팅(Sharpening)과 같은 처리 방법이다. 흐려진 영상을 개선하여 첨예화 하는 결과영상을 생성하게 된다. 


[그림 5] 고주파 통과 필터 마스크



   고주파 통과 필터 영상은 저주파 통과 필터를 이용하여 얻을 수 있다. 원본 영상에서 저주파 통과 필터링으로 얻은 영상을 뺀 차 영상은 고주파 성분만 남게 된다. 

  고주파 통과 필터링 중 고주파 강조 필터는 고주파에 해당하는 세부 정보를 강조하는 반면, 영상에서 중요한 부분인 낮은 공간 주파수의 성분은 손실시키는 고주파 통과 필터의 문제를 해결해 줄 수 있다. 저주파 영역의 상쇄에 해당하는 부분에 일정량의 이득을 주어 낮은 공간 주파수에 해당하는 성분의 손실을 어느 정도 보상 할 수 있다.  


[그림 6] 고주파 강조 필터 생성 방법 및 고주파 강조 필터 마스크



  고주파 통과 필터링 중 샤프닝 필터는 고주파 통과 필터에서 발생하는 낮은 공간 주파수의 성분이 손실되는 문제점을 보완해주는 마스크이다. 샤프닝 필터링 된 영상은 원본 영상에 고주파 통과 필터링된 영상을 합 한 것과 비슷한 결과를 얻는다. 다음은 샤프팅 필터 마스크의 형태이다. 


[그림 7] 샤프닝 필터 마스크




Laws Texture Energy Measures  

  이 방법은 고전적인 영상처리 방법으로써 다양한 Object Detection에 쓰는 간단한 접근법이다. 즉, Texture feature를 생성하기 위한 접근법 중 하나이다. 이는 다양한 텍스쳐 타입을 Detection 할 수 있는 방법이다. 마스크는 아래와 같은 vector 들로 이루어져 있으며 이러한 마스크를 적용하여 Texture를 Detection 할 수 있다.

L5 (Level)    =    [ 1 4 6 4 1 ]

E5 (Edge)    =    [ -1 -2 0 2 1]

S5 (Spot)     =    [ -1 0 2 0 -1 ]

R5 (Ripple)    =    [ 1 -4 6 -4 1 ]


  이는 1차원의 Basic Masks와 2차원의 Convolution Mask로 나눌 수 있다. 사실 이 포스팅은 Laws Texture Energy Measures 개념을 설명하기 위해... 쓴 것이다. 먼저 1차원 Basic Masks는 다음 표와 같은 형식으로 나타나 있다. 


[표 1] Texture Energy Measure Vectors


[그림 8] The Texture Energy Map Ek


 2차원 Convolution Mask는 아래의 그림처럼 Vector Mask를 이미지에 적용 할 수 있다. Law Texture Energy Measures에 대한 프로그래밍을 해보았는데 5x5 Laws 2-D convolution mask를 적용하였고, 5-VL 값을 이용하여 2차원 Convolution Mask를 사용하여 프로그래밍 하였다. 자료도 별로 없었던지라 논문을 한 개 참고하여 작성하였는데, 아주 큰 도움이 되었다. 지금 자세히 보니 ICACT에 제출 된 논문이었다. 지금 또 다시 살펴보니 충남대학교 컴퓨터과학부? 가 쓴 논문인가보다. 아주 큰 도움이 되었다... 


출처 : http://icact.org/upload/2011/0702/20110702_Abstract_B.pdf


[그림 9] 2-D Convolution Mask between W5 and E5


실행해 본 결과는 아래와 같다.


[그림 10] Texture Energy Measures 결과화면 






728x90
반응형