Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Matplotlib
- queue
- MySQL
- pandas
- 프로그래머스
- 알고리즘 스터디
- python
- 백준
- type hint
- 알고리즘스터디
- programmers
- Stack
- NumPy
- 정보처리기사 c언어
- 노마드코딩
- 데이터시각화
- 자료구조
- Algorithm
- 알고리즘
- dataframe
- Selenium
- 가상환경
- javascript
- 파이썬
- 선그래프
- 코딩테스트
- aws jupyter notebook
- String Method
- openCV
- Join
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[OpenCV/Python] 블러 필터링(Blur, GaussianBlur, Bilateral Filter, MedianBlur) 본문
Python/OpenCV
[OpenCV/Python] 블러 필터링(Blur, GaussianBlur, Bilateral Filter, MedianBlur)
all_sound 2022. 11. 13. 12:51영상 공간 필터링
- 원하는 정보는 통과, 나머지는 걸러내는 작업
- 대표적인 필터 : 잡음 제거, 부드러운 성분 제거 etc
- 필터(마스크, 커널, 윈도우...)와 합성곱 연산
# 필터링 연산
- 합성곱 연산(convolution)
# Border Type
# 블러 필터
▶ Blur
# lena, filter 3 x 3, 7 x 7
src = cv2.imread('./lena.jpg')
dst1 = cv2.blur(src, ksize = (3,3), borderType=cv2.BORDER_CONSTANT)
dst2 = cv2.blur(src, ksize = (3,3), borderType=cv2.BORDER_REPLICATE)
dst3 = cv2.blur(src, ksize = (7,7), borderType=cv2.BORDER_REFLECT)
dst4 = cv2.blur(src, ksize = (7,7), borderType=cv2.BORDER_REFLECT_101)
cv2.imshow('src', src)
cv2.imshow('dst1', dst1)
cv2.imshow('dst2', dst2)
cv2.imshow('dst3', dst3)
cv2.imshow('dst4', dst4)
cv2.waitKey()
cv2.destroyAllWindows()
▶ GaussianBlur
src = cv2.imread('./lena.jpg')
# sigma : 분산 정도 (커질수록 가운데 값의 가중치가 줄이든다)
# 0을 넣으면 kernel 사이즈에 맞춰 자동으로 계산해줌
dst1 = cv2.blur(src, ksize=(7,7), borderType=cv2.BORDER_CONSTANT)
dst2 = cv2.GaussianBlur(src, ksize=(3,3), sigmaX=0, sigmaY=0, borderType=cv2.BORDER_CONSTANT)
dst3 = cv2.GaussianBlur(src, ksize=(7,7), sigmaX=10, sigmaY=10, borderType=cv2.BORDER_CONSTANT)
cv2.imshow('src', src)
cv2.imshow('Blur', dst1)
cv2.imshow('GaussianBlur1', dst2)
cv2.imshow('GaussianBlur2', dst3)
cv2.waitKey()
cv2.destroyAllWindows()
▶ Bilateral Filter
- 엣지를 제거하는 노이즈 제거 필터
src = cv2.imread('./lena.jpg')
dst1 = cv2.blur(src, ksize=(3,3), borderType=cv2.BORDER_CONSTANT)
dst2 = cv2.bilateralFilter(src, -1, 10, 10, cv2.BORDER_CONSTANT)
dst3 = cv2.bilateralFilter(src, 0, 40, 10, cv2.BORDER_CONSTANT)
img = np.hstack((dst2, dst3))
cv2.imshow('src', src)
cv2.imshow('Blur', dst1)
cv2.imshow('bilateralFilter', img)
cv2.waitKey()
cv2.destroyAllWindows()
▶ MedianBlur
- 픽셀의 중앙값을 취하는 방법
src = cv2.imread('./lena.jpg', cv2.IMREAD_GRAYSCALE)
dst1 = cv2.blur(src, ksize=(3,3), borderType=cv2.BORDER_CONSTANT)
dst2 = cv2.medianBlur(src, ksize=3)
dst3 = cv2.medianBlur(src, ksize=5)
img = np.hstack((dst2, dst3))
cv2.imshow('src', src)
cv2.imshow('Blur', dst1)
cv2.imshow('medianBlur', img)
cv2.waitKey()
cv2.destroyAllWindows()
- Salt & Peppers noise removal
src = cv2.imread('./lena_noise.png', cv2.IMREAD_GRAYSCALE)
dst1 = cv2.medianBlur(src, ksize=3)
cv2.imshow('src', src)
cv2.imshow('dst1', dst1)
cv2.waitKey()
cv2.destroyAllWindows()
'Python > OpenCV' 카테고리의 다른 글
[OpenCV/Python] 모폴로지(Morphology) 연산 - 침식(erode), 팽창(dilate), 열림(open), 닫힘(close) (1) | 2022.11.13 |
---|---|
[OpenCV/Python] Edge 필터링 (Sobel, Laplacian) (0) | 2022.11.13 |
[OpenCV/Python] 이벤트 처리 (키보드, 마우스, 트랙바) (0) | 2022.11.13 |
[OpenCV/Python] 히스토그램(Histogram) 그래프 & 스트레칭 & 평활화 (normalize, equalize) (0) | 2022.11.13 |
[OpenCV/Python] 임계값(Threshold) 처리 (BINARY, BINARY_INV, TRIANGLE, OTSU 등) (0) | 2022.11.12 |