인공지능/딥러닝

[딥러닝]OpenCV Python의 Filter

커다란송 2024. 7. 30. 15:39
728x90

OpenCV에서 제공하는 2D 이미지에 적용 가능한 선형, 비선형 필터링 함수들에 대해 알아보자.

 

https://docs.opencv.org/4.x/d4/d86/group__imgproc__filter.html

 

OpenCV: Image Filtering

Functions and classes described in this section are used to perform various linear or non-linear filtering operations on 2D images (represented as Mat's). It means that for each pixel location \((x,y)\) in the source image (normally, rectangular), its neig

docs.opencv.org

 

🟥 OpenCV Filterring

Filtering은 Convolution과는 다른 개념으로 사용되는 이미지 처리 방법 중 하나이다.  그리고 특정 목적에 따라 필터를 달리하여 사용할 수 있고 서로 다른 방법을 결합하여 이미지 처리 작업을 더 효과적으로 수행할 수도 있다.

 

• Blurring Filters

주로 노이즈를 줄이거나 부드러운 효과를 주기 위해 사용되는 필터

 

- Average Blurring

  > 커널의 평균을 사용하여 이미지를 부드럽게 만드는 필터

  >이미지를 흐리게 하고 작은 노이즈를 제거

(좌) 원본 / (우) Average Blurring

- Gaussian Blurring

  > 가우시안 분포를 사용하여 블러링을 수행

  > 노이즈 제거에 효과적이며, 엣지의 변화가 적음

(좌) 원본 / (우) Gaussian Blurring

- Median Blurring

  > 주변 픽셀 값들의 중간값을 사용하여 블러링을 수행

  > 특히 Salt-Pepper 노이즈 제거에 효과적

(좌) 원본 / (우) Median Blurring

 

- Bilateral Filtering

  > 엣지 보존 블러링으로, 엣지를 유지하면서 노이즈를 제거

  > 엣지 주변의 블러링을 최소화하여 디테일을 보존

(좌) 원본 / (우) Bilateral Filtering

 

• Sharpening Filters

이미지의 에지와 디테일을 강조하여 더 선명한 효과를 주기 위해 사용

- Unsharp Masking

  > 이미지의 고주파 성분을 강조하여 샤프닝 효과 창출(부드러운 이미지를 날카롭게)

(좌) 원본 / (우) Unsharp Masking

- Laplacian Filter

  > 라플라시안 연산을 사용하여 샤프닝을 수행

  > 에지의 변화를 강조하여 선명한 이미지를 생성

(좌) 원본 / (우) Laplacian Filter(RGB-GRAY-RGB)

 

 Edge Detection Filters

이미지에서 에지를 검출하여 개체의 형태와 경계를 식별하기 위해 사용

- Sobel Operator

  > 이미지의 수평 및 수직 방향으로 에지를 검출

  > 미분 연산을 통해 에지를 강조

(좌) 원본 / (우) Sobel X축 미분과 Y축 미분 결과 합
(좌) X축 미분 Sobel / (우) Y축 미분 Sobel

 

-  Scharr Operator

  > Sobel 연산자의 개선된 버전으로, 더 정확한 에지 검출이 가능

  > 에지 검출의 민감도를 높임

(좌) 원본 / (우) Scharr X축 미분과 Y축 미분 결과 합
(좌) X축 미분 Scharr / (우) Y축 미분 Scharr

- Canny Edge Detector

  > 멀티스테이지 에지 검출 알고리즘으로, 가장 널리 사용되는 에지 검출 방법 중 하나

  > 노이즈 제거, 그라디언트 계산, 비최대 억제, 이력 임계값 등의 단계를 거쳐 정교한 에지를 검출

(좌) 원본 / (우) Canny Edge

 

Morphological Filters

이미지의 형태를 변형하거나, 구조적인 특징을 추출하기 위해 사용

- Erosion(침식)

  > 전경 픽셀을 축소시켜 작은 개체나 노이즈를 제거

(좌) 원본 / (우) Erosion

 

- Dilation(팽창)

  > 전경 픽셀을 확장시켜 객체를 강조하고 구멍을 메움

(좌) 원본 / (우) Dilation

 

- Opening(열기)

  > 침식 후 팽창을 수행하여 작은 개체를 제거

(좌) 원본 / (우) Opening

 

- Closing(닫기)

  > 팽창 후 침식을 수행하여 작은 구멍을 메움

(좌) 원본 / (우) Closing

 

- Gradient

  > 팽창과 침식의 차이를 구하여 에지를 강조

(좌) 원본 / (우) Gradient

 

etc)

- 미분 기반 필터링에는 Sobel, Scharr, Laplacian이 해당한다.

- Laplacian Filter를 이용한 엣지 검출도 가능하다.

- 엣지 검출은 grayscale이 용이하다.

 

 

참고하기 좋은 글

https://velog.io/@claude_ssim/%EA%B3%84%EC%82%B0%EC%82%AC%EC%A7%84%ED%95%99-Edge-Aware-Image-Filtering-Bilateral-Filtering

 

 

 

 

 

728x90