컨볼루션을 이용한 이미지의 필터링
- 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
오히려 값이 늘어난 것을 확인할 수 있음
장점: 좋은 결과를 가져옴
단점: 연산량이 너무 많아짐
'study > 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 |