컴퓨터 비전(OpenCV) 스터디

230612-18 스터디

2023. 6. 18. 18:48

< OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝 > 교재 7, 8장 공부

 

 

- 7장 필터링

7.1 영상의 필터링

<필터링 연산 방법>

- 필터링

영상 처리에서 필터링(filtering)이란 영상에서 원하는 정보만 통과시키고 원치 않는 정보는 걸러 내는 작업

ex) 잡음 제거, 부드러운 성분 제거해 날카로운 느낌의 영상 만들기- 마스크 (== 커널, 윈도우 or 가끔 필터)

작은 크기의 행렬, 다양한 크기와 모양

행렬의 원소는 보통 실수로 구성

마스크 행렬을 어떻게 정의하는가에 따라 영상을 전반적으로 부드럽게 만들 수도 있고, 반대로 날카롭게 만들 수도 있음

- 고정점

현재 필터링 작업을 수행하고 있는 기준 픽셀 위치

대부분의 경우 마스크 행렬 정중앙을 고정점으로 사용

- 마스크를 이용한 필터링 연산 기법

(마스크, 입력 영상) 두 행렬의 같은 위치 상에 있는 원소끼리 곱한 것들의 합을 고정점에 넣어줌(컨볼루션 연산...)

- 가장자리 픽셀 확장 방법

가장자리까지 계산해 값을 넣어줌

BorderTypes 열거형 상수를 이용해 다양한 방법으로 가장자리 픽셀을 확장할 수 있음

- 일반적인 필터링은 filter2D() 함수를 이용

 

<엠보싱 필터링>

- 엠보싱

직물이나 종이, 금속판 등에 올록볼록한 형태로 만든 객체의 윤곽 또는 무늬

- 엠보싱 필터링

입력 영상을 엠보싱 느낌이 나도록 변환하는 필터

-1 -1 0

-1 0 1

0 1 1  -> 이 필터를 주로 사용해 엠보싱 필터 구현

- filter2D() 함수를 사용하여 영상에 엠보싱(embossing) 필터링을 적용하는 예제 프로그램

filter_embossing() 함수

 

7.2 블러링: 영상 부드럽게 하기

- 블러링(==스무딩)

초점이 맞지 않은 사진처럼 영상을 부드럽게 만드는 필터링 기법

잡음제거, 영상 부드럽게 만들기 등의 목적으로 사용됨

 

<평균값 필터>

- 블러링 필터 중 단순하고 구현하기 쉬움

- 입력 영상에서 특정 픽셀과 주변 픽셀들의 산술 평균을 결과 영상 픽셀 값으로 설정하는 필터

- 픽셀 값의 급격한 변화가 줄어들어 날카로운 에지가 무뎌지고 잡음의 영향이 크게 사라지는 효과

- 평균값 필터를 너무 과도하게 사용할 경우 사물의 경계가 흐릿해지고 사물의 구분이 어려워질 수 있음

- blur 함수: 1/(가로*세로) * (주어진 행렬)

 

<가우시안 필터>

- 평균값 필터보다 자연스러운 블러링 결과를 생성

- 가우시안 분포(Gaussian distribution) 함수를 근사하여 생성한 필터 마스크를 사용하는 필터링 기법

- 가우시안 분포: 정규분표, 종 모양을 따름

- 가우시안 필터 마스크가 가중 평균을 구하기 위한 가중치 행렬 역할을 함

- 연산량 줄이기 위해 1차원 가우시안 함수를 새용해 필터링

- GaussianBlur() 함수 사용

- getGaussianKernel() 함수:  1차원 가우시안 필터 마스크를 생성

 

7.3 사프닝: 영상 날카롭게 하기

- 사프닝

블러링과 반대, 사물의 윤곽이 뚜렷하고 선명한 느낌이 나도록 영상을 변경하는 필터링 기법

날카로운 느낌이 나도록 함

- 샤프닝을 구현하기 위해 블러링된 영상(언샤프한 영상)을 사용

 

<언샤프 마스크 필터>

- 언샤프 마스크 필터

언샤프한 영상을 이용하여 역으로 날카로운 영상을 생성하는 필터

- 언샤프 마스크 필터링 과정

g(x, y)는 입력 영상에서 오직 날카로운 성분만을 가지고 있는 함수

 α는 샤프닝 결과 영상의 날카로운 정도를 조절할 수 있는 파라미터

 

7.4 잡음 제거 필터링

<영상과 잡음 모델>

- 신호 처리 관점에서 잡음(noise)이란 원본 신호에 추가된 원치 않은 신호를 의미

- 잡음 모델

잡음이 생성되는 방식

- 가우시안 잡음 모델

다양한 잡음 모델 중에서 가장 대표적인 잡음 모델

보통 평균이 0인 가우시안 분포를 따르는 잡음을 의미

표준 편차가 작은 가우시안 잡음 모델일수록 잡음에 의한 픽셀 값 변화가 적음

- OpenCV 함수를 이용하여 영상에 가우시안 모델을 따르는 잡음을 인위적으로 추가할 수 있음

- 영상에 noise추가하는 예제!

 

<양방향 필터>

- 가우시안 잡음을 제거하기 위해 가우시안 필터를 사용

- 주변 픽셀 값이 부드럽게 블러링되면서 잡음의 영향도 크게 줄어듦

- 에지 보전 잡음 제거 필터

에지 정보는 그대로 유지하면서 잡음만 제거함

토마시(C. Tomasi)가 제안한 양방향 필터(bilateral filter)는 에지 성분은 그대로 유지하면서 가우시안 잡음을 효과적으로 제거하는 알고리즘임 (두 개의 가우시안 함수 곱으로 구성된 필터)

- bilateralFilter() 함수를 이용하여 양방향 필터를 수행

- 더 깔끔하게 보여줌!

 

<미디언 필터>

- 입력 영상에서 자기 자신 픽셀과 주변 픽셀 값 중에서 중간값(median)을 선택하여 결과 영상 픽셀 값으로 설정하는 필터링 기법

- 다른 연산은 사용하지 않고 중간값을 선택하기 위해 주변 픽셀 값을 정렬하는 과정이 사용됨

- 특히 잡음 픽셀 값이 주변 픽셀 값과 큰 차이가 있는 경우에 효과적으로 동작

- 소금&후추 잡음(salt & pepper noise)

픽셀 값이 일정 확률로 0 또는 255로 변경되는 형태의 잡음

이 잡음이 추가된 영상에 미디언 필터를 사용하면 그 중간값을 내주기 때문에 잡음이 효과적으로 제거됨

- medianBlur() 함수를 이용하여 미디언 필터링을 수행

- 위와 같은 잡음 제거하는 역할을 함!

 

 

 

- 8장 영상의 기하학적 변환

8.1 어파인 변환

<어파인 변환>

- 영상의 평행 이동, 확대 및 축소, 회전 등의 조합으로 만들 수 있는 기하학적 변환

- 영상을 한쪽 방향으로 밀어서 만든 것 같은 전단 변환도 어파인 변환에 포함

- 영상의 기하학적 변환(geometric transform)은 영상을 구성하는 픽셀의 배치 구조를 변경함으로써 전체 영상의 모양을 바꾸는 작업

- 영상의 밝기 및 명암비 조절, 필터링 등은 픽셀 위치는 고정한 상태에서 픽셀 값을 변경하였지만 기하학적 변환은 픽셀 값은 그대로 유지하면서 위치를 변경하는 작업

- getAffineTransform() 함수로 어파인 변환 행렬을 구함

 

<이동 변환>

- 영상을 가로 또는 세로 방향으로 일정 크기만큼 이동시키는 연산을 의미하며 시프트(shift) 연산이라고도 함

- 좌표를 기준으로 평행이동처럼 이동시킴

 

<전단 변환>

- 직사각형 형태의 영상을 한쪽 방향으로 밀어서 평행사변형 모양으로 변형되는 변환이며 층밀림 변환이라고도 함

 

<크기 변환>

- 영상의 전체적인 크기를 확대 또는 축소하는 변환

- 몇몇 영상 인식 시스템은 정해진 크기의 영상만을 입력으로 받기 때문에 영상을 해당 크기에 맞게 변경하여 입력으로 전달해야 함

- 복잡한 연산을 피하기 위해 일부로 줄여 연산하는 경우도 있음

- 어파인 변환 행렬을 생성하고 warpAffine() 함수를 이용, resize() 함수를 제공

- 보간법 사용...

 

<회전 변환>

- 입력 영상을 회전해야 하는 경우, 적절히 수평 맞춰야 하는 경우 등에 영상 회전이 필요

- 특정 좌표를 기준으로 영상을 원하는 각도만큼 회전하는 변환

- cos() 함수와 sin() 함수를 이용하여 앞과 같은 행렬을 생성하고, warpAffine() 함수를 사용하면 영상을 회전

- getRotationMatrix2D() 함수를 제공

 

<대칭 변환>

- 영상의 기하학적 변환 중에 영상의 좌우를 서로 바꾸거나, 또는 상하를 뒤집는 형태의 변환

- 영상의 대칭 변환을 수행하는 flip() 함수를 제공

 

8.2 투시 변환

- 영상의 기하학적 변환 중에는 어파인 변환보다 자유도가 높은 투시 변환이 있음

- 투시 변환은 직사각형 형태의 영상을 임의의 볼록 사각형 형태로 변경할 수 있는 변환

- 투시 변환에 의해 원본 영상에 있던 직선은 결과 영상에서 그대로 직선성이 유지되지만, 두 직선의 평행 관계는 깨어질 수 있음

- getPerspectiveTransform() 함수 사용해 투시 변환 구현 가능

 

 

 

 

 

'컴퓨터 비전(OpenCV) 스터디' 카테고리의 다른 글

230626-230702 스터디  (0) 2023.06.28
230619-25 스터디  (0) 2023.06.22
230619-25 스터디  (0) 2023.06.22
230522-28 스터디  (0) 2023.05.27
230515-21 스터디  (0) 2023.05.18