티스토리 뷰
공간 필터링
이웃처리 과정
1. 중앙점(x,y)의 정의
2. 이웃에 있는 화소만을 포함하는 연산 수행
3. 이 연산의 결과를 그 점에서의 처리의 "응답"으로 하고
4. 영상의 모든점에 대해 반복한다.
중앙점을 이동시키는 과정은 새로운 이웃을 만드는 데 입력영상의 각 화소에 대해 하나씩 생긴다.
만약 이웃화소들에 대해 수행된 연산이 선형적이면, 선형공간 필터링
비선형 적이면, 비선형 공간 필터링
선형 공간 필터링(spatial convolution)
이웃의 각 화소를 대응하는 계수로 곱하고 그 결과들을 더해서 각 점 (x,y)에서의 응답을 얻는 것으로 구성된다. 만약, 이웃을 크기가 m*n이면, mn개의 계수가 필요하다.
계수란?
- 마스크, 필터, 커널,윈도우, 템플릿 등을 가리킴
각 점(x,y) 에서의 응답은 필터 계수들과 필터 마스크가 덮은 영역안에 대응하는 이웃 화소들의 곱들의 합이다.
크기 m * n의 마스크에 대해서
대부분 홀수 크기의 마스크를 선정한다.(중앙점이 유일 하기때문)
가장 작은 마스크 크기는 3*3이다.
선형 공간 필터링 시 필수 지식 2가지
1. correlation : 영상 배열 g(x,y)위로 mask가 지나가는 처리
2. convolution : 영상 배열 g(x,y)위로 mask가 지나가기 전에 180도 회전 후 처리
예) 512 * 512 이미지
gd = imshow(gd,[])
- 영상의 경계를 0으로 padding
- 필터링된 영상의 흑과 백사이의 경계는 희미해진다. ( 패딩된 경계가 흑색이므로)
gr = imfilter(f,w,'replicate')
- 'replicate를 사용해서 희미한 경계를 해결
figure,imshow(gr,[])
- 바깥경계를 복사 Nonzero-padding
gs = imfilter(f,w,'symmetric')
figure,imshow(gs,[])
- bottom 바깥 경계 부근이 다름
gc = imfilter(f,w,'circular')
figure,imshow(gc,[])
- 주기성을 사용한다.
참고) fp = paddrray(f,[r,c],'method', direction)
fp : padding된 영상
[r,c] : padding 할 행, 열의 수
method : 1. symmetric : 경계를 기준으로 mirror-reflecting에 의해 영상의 크기를 확장한다.
2. replicate : 경계의 값들을 복제해서 영상크기를 확장
3. circular : 영상을 2D주기함수의 한 주기로 다루어 영상의 크기를 확장
direction : 1. pre : 각 차원의 끝 요소 뒤로 패딩
2. post : 각 차원의 끝 요소 뒤로 패딩
3. both : 각 차원의 첫 요소 앞과 끝 요소의 뒤로 패딩 ( defalut)
비선형 공간 필터링
이웃연산에 기반한다.
- 선형 공간 필터링은 곱의 합에 기반하지만, 비선형 공간 필터링은 이웃화소들을 포함하는 비선형 연산에 기반한다.
=> 각 중앙 점에서의 응답을 이웃에서의 최대 화소값으로 만드는 것이 비선형 필터링이다.
(비선형 처리에서는 마스크의 개념이 별로 적용 안된다.)
'3학년 2학기 > openCV' 카테고리의 다른 글
background (3) | 2016.12.05 |
---|---|
Image segmentation (0) | 2016.12.05 |
사람의 피부 검출 (0) | 2016.11.24 |
opencv 영상 (0) | 2016.10.15 |
픽셀 (0) | 2016.10.13 |