프로그래밍/컴퓨터 비전 with openCV

영상의 필터링

Jay_rock 2022. 4. 16. 23:38

필터란?

무언가를 걸러 내고 일부만을 통과시키는 장치

 

영상처리에서 필터링이란 영상에서 원하는 정보만 통과시키고 걸러내는 작업을 뜻한다.

 

영상의 필터링은 보통 마스크(mask)라 불리는 작은 크기의 행렬을 이용하는데, 이 마스크를 어떻게 설정하는가에 따라 부드럽거나 혹은 날카롭게 만들거나 잡음을 제거하는 등의 영상처리가 가능하다. 

 

마스크 연산

필터링을 하기 위해서 모든 영상의 픽셀 값에 마스크 행렬을 이동시키면서 연산을 진행한다. 연산 방법은 마스크 행렬 원소 값과 같은 위치의 픽셀 값을 서로 곱하여 모두 더하여 고정점(보통 행렬의 정중앙 점)에 설정한다.

 

f(x, y) : 영상 픽셀 값,  m(x, y) : 마스크 행렬의 원소 값,  g(x, y) : 마스크 연산 결괏값 

ex)  g(x, y) = m(0, 0)f(x-1, y-1) + m(0, 1)f(x-1, y) + m(0, 2)f(x-1, y+1)
               + m(1, 0)f(x, y-1) + m(1, 1)f(x, y) + m(1, 2)f(x, y+1)
               + m(2, 0)f(x+1, y-1) + m(2, 1)f(x+1, y) + m(2, 2)f(x+1, y+1)

 

이때 중요한 것이 영상 가장자리 픽셀 처리이다. 보통 영상 바깥쪽에 가상 픽셀을 만들어 처리하는데 여러 가지 방법이 존재한다.

 

 

opencv에선 필터링 수행을 위해 filter2D() 함수를 사용한다.

void cv::filter2D(InputArray src,
                  OutputArray dst,
                  int ddepth,
                  OutputArray dst,
                  InputArray kernel,
                  Point anchor = Point(-1,-1),     # 고정점
                  double delta = 0,                # 필터링 연산 후 추가적으로 더할 값
                  int borderType = BORDER_DEFAULT) # 가장자리 픽셀 확장 방식

 

 

 

 

 


 

 

본 내용은 < OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝(저자 : 황선규) > 내용을 참고하여 작성되었습니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=14722394

 

OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝

컴퓨터 비전 기초부터 딥러닝 활용까지!컴퓨터 비전은 컴퓨터를 이용하여 정지 영상 또는 동영상으로부터 의미 있는 정보를 추출하는 학문이다. 즉, 사람의 눈과 뇌가 하는 작업을 수학적 알고

book.naver.com