Convolution
: 특정 픽셀이, 마스크의 중심에 오도록 함
: 마스크 범위 내에 포함되는 이웃 픽셀을 마스크의 원소와 곱한 결과 도출
: 쉽게 설명해서 주위 값들을 활용해서 지금 위치의 값을 변경시키는 것임
: 당연히 가장자리는 계산을 못한다.
-> 이를 위해 활용하는게 Padding(가장자리를 다 0)
-> 테두리 값 활용하기도 있음
1. 블러링
이미지에서 노이즈를 제거하기 위해 많이 사용
cv.blur(이미지, (mask 크기) ) 쓰면 간편
import cv2 as cv
import numpy as np
img = cv.imread('HBW.jpg')
img_blur = cv.blur(img, (10, 10))
cv.imshow('Original', img)
cv.imshow('blur', img_blur)
cv.waitKey(0)
2. 가우시안 블러링
: 마스크 중심에 가중치를 더 높게 부여해 주는것
: cv.GaussianBlur(이미지, (마스크 크기), 0) 사용
3. 중간값 블러링
: 커널 크기 내의 픽셀을 크기순으로 정렬 후, 중간값을 뽑아서 선정
: 무작위 노이즈 제거의 효과적!
: cv.MedianBlur(이미지, 커널 크기)
4. 양방향 필터링 (Bilateral Filtering)
: 노이즈를 감소시키는 것에 가장 큰 단점은 에지를 없애버리는 것
: 에지를 보존하면서 노이즈를 감소시킬 수 있음
: 가우시안 필터 + 경계 필터
cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace, dst, borderType)
src: input
d: 필터의 직경(diameter), 5보다 크면 매우 느림
sigmaColor: 색공간의 시그마 값
sigmaSpace: 좌표 공간의 시그마 값
sigmaColor 랑 sigmaSpace는 같아야 한다.
참조:
'OpenCV > Python' 카테고리의 다른 글
모폴로지 Morphology (0) | 2021.06.13 |
---|---|
에지 검출 (0) | 2021.06.13 |
원근(퍼스펙티브) 변환 (0) | 2021.06.13 |
영역 지정 (내가 헷갈려서 정리..) (0) | 2021.06.13 |
이미지 기하학적 변환 (0) | 2021.06.13 |