본문 바로가기
Lecture/Image Information Processing

컨볼루션을 이용한 이미지의 필터링

by YUNZEE 2023. 11. 16.
728x90

컨볼루션을 이용한 이미지의 필터링

- 2차원 데이터에서 2차원 회선 마스크를 사용하여 컨볼루션 처리

- 입력 픽셀과 이웃한 각 필셀에 가중치를 곱한 합을 출력값으로 생성

 

f(x, y): 입력 영상의 픽셀값

g(x, y): 컨볼루션 처리로 출력한 픽셀값

m(u, v): 입력 영상의 픽셀에 대응하는 가중치

n: 마스크 사이즈(2k+1)

k: 단 방향에서의 이웃의 개수(n=3인 경우, 중심점을 기준으로 오른쪽에 1개의 이웃)

 

- 가중치(weight)를 포함한 마스크가 이동하면서 수행

- 마스크가 영상의 왼쪽 위 픽셀 위치에서 오른쪽으로 한 픽셀씩 차례로 이동하면서 수행

- 한 줄에서의 컨볼루션 수행이 끝나면, 다른 줄로 이동하여 동일하게 수행

 

마스크에 따른 컨볼루션 예

1차원 데이터에서 1차원 마스크를 사용하여 컨볼루션 처리

크기가 n*n인 마스크와 크기가 h*w인 입력 영상 간의 컨볼루션 결과

경계 부분 처리

- 영역을 처리하려면 이웃 픽셀이 있어야 하지만 시작이나 끝부분에는 주변 픽셀이 없는 것처럼 마스크에 대응할 요소가 없는 영상의 픽셀을 처리하는 방법을 경계 부분 처리라고 함

 

경계 부분 처리 (방법 1)

Vaild padding: 중첩 부분에서만 컨볼루션 수행

- 마스크의 영상이 완전하게 중첩되는 위치에서 컨볼루션을 시작

- 마스크의 크기가 3*3 이면 모든 마스크의 요소와 영상의 픽셀 중첩되는 f(1, L)에서 컨볼루션 시작

- 경계 부분은 컨트롤 처리가 되지 않으므로 머드 영역

- 출력 영상 크기: (h*w) image * (n*n)mask -> (h - n + 1) * (w - n + 1) image

장점: 데이터 양이 적어짐

단점: 데이터 양이 적어지면 인공지능의 기능이 낮아짐

 

경계 부분 처리(방법 2)

- Same padding: 모든 픽셀에 대해서 컨볼루션 수행

- 입력과 출력 영상의 크기가 동일하도록 입력 영상을 임의로 변형

결과적으로, valid padding이 수행되는 구조임

출력 영상 크기

- (h + 2k) * (w + 2k)image * (n*n) filter -> (h * w) image, k=(n-1)/2

zero padding: 0 삽입

- 마스크에 대응되는 빈 영상의 픽셀값을 모두 0으로 가정해서 컨볼루션을 수행하는 방법

- 0으로 설정해서 영상의 경계 부분에서 정확한 컨볼루션 처리가 불가능하므로 손실이 발생함

- 프로그램을 단순하게 구현할 수 있다는 장점이 있음(손실이 있으나 단순하게 구현할 수 있다는 장점)

 

case 1) (7 * 7) pixels * {(3*3)multiply + (3*3-1)add} = 833

case 2) (7 * 7) pixels * {(5*5)multiply + (5*5-1)add} = 2,401

case 3) (7 * 7)pixels * {(7*7) multiply + (7*7-1) add} = 4,753

오히려 값이 늘어난 것을 확인할 수 있음

장점: 좋은 결과를 가져옴

단점: 연산량이 너무 많아짐

728x90

'Lecture > Image Information Processing' 카테고리의 다른 글

고주파 통과 필터링  (0) 2023.11.27
공간 필터링 연산  (4) 2023.11.23
영역 처리의 개념  (0) 2023.11.13
히스토그램 명세화  (2) 2023.11.13
히스토그램 평활화(Histogram Equalization)  (2) 2023.11.06