Python의 양방향 필터링

Aditya Raj 2024년2월15일
  1. 양방향 필터링이란
  2. Python에서 양방향 필터링을 수행하는 단계
  3. Python의 bilateralFilter() 함수
  4. bilateralFilter() 함수를 사용하여 Python에서 양방향 필터링 수행
Python의 양방향 필터링

필터링은 컴퓨터 비전 응용 프로그램에서 이미지를 처리하는 데 사용됩니다. 이 기사에서는 OpenCV 모듈을 사용하여 Python에서 양방향 필터링을 구현하는 방법에 대해 설명합니다.

양방향 필터링이란

양방향 필터링은 평활화 필터링 기술입니다. 각 픽셀 값을 이웃의 가중 평균 픽셀 값으로 대체하는 비선형 및 노이즈 감소 필터입니다.

양방향 필터링은 가장자리 전체의 픽셀을 평균화하지 않기 때문에 가장자리 보존 필터링이라고도 합니다.

Python에서 양방향 필터링을 수행하는 단계

양방향 필터링을 수행하기 위해 주로 4가지 작업을 수행합니다.

  1. 이미지의 각 픽셀을 이웃 픽셀의 가중 평균으로 바꿉니다.

  2. 각 이웃의 가중치는 현재 픽셀로부터의 거리에 의해 결정됩니다. 가장 가까운 픽셀에 가장 높은 가중치를 부여하고 먼 픽셀에 가장 낮은 가중치를 할당하는 각 픽셀에 가중치를 할당합니다.

    이 작업을 수행하기 위해 공간 매개변수를 사용합니다.

  3. 이웃의 가중치는 또한 픽셀의 강도 차이에 따라 달라집니다. 현재 픽셀과 강도가 유사한 픽셀에는 더 많은 가중치가 할당되고 강도 차이가 큰 픽셀에는 더 낮은 가중치가 할당됩니다.

    이 작업을 수행하기 위해 범위 매개변수를 사용합니다.

  4. 공간 매개변수를 증가시켜 이미지의 더 큰 특징을 부드럽게 할 수 있습니다. 반면에 범위 매개변수를 늘리면 양방향 필터링이 가우스 필터링처럼 작동합니다.

Python의 bilateralFilter() 함수

bilateralFilter() 함수를 사용하여 OpenCV 모듈을 사용하여 Python에서 양방향 필터링을 수행할 수 있습니다. bilateralFilter() 함수의 구문은 다음과 같습니다.

bilateralFilter(src, d, sigmaColor, sigmaSpace, borderType)

여기,

  • src 매개변수는 입력 인수로 처리해야 하는 소스 이미지를 사용합니다.

  • 매개변수 d는 필터링하는 동안 픽셀이 고려되는 이웃의 직경을 취합니다.

  • 매개변수 sigmaColor는 색상 공간의 필터 시그마 값입니다. sigmaColor 값이 높을수록 색상 공간에서 더 멀리 떨어져 있는 색상이 필터링되는 동안 고려된다는 의미입니다.

    sigmaColor 매개변수는 sigmaSpace 범위의 값을 포함해야 합니다.

  • 매개변수 sigmaSpace는 공간 영역에서 시그마의 값을 나타냅니다. sigmaSpace의 값이 높을수록 필터링하는 동안 현재 픽셀에서 더 멀리 떨어진 픽셀이 고려됨을 의미합니다.

    sigmaSpace 매개변수는 sigmaColor 범위의 값을 포함해야 합니다.

  • 매개변수 borderType은 이미지 경계의 픽셀을 필터링하면서 이미지 외부의 픽셀을 외삽하는 모드를 정의하는 데 사용됩니다.

bilateralFilter() 함수를 사용하여 Python에서 양방향 필터링 수행

다음은 Python에서 양방향 필터링을 수행하는 단계입니다.

  • 먼저 cv2를 가져올 것입니다.
  • 다음으로, 이미지의 파일 경로를 입력 인수로 사용하고 이미지를 나타내는 배열을 반환하는 imread() 함수를 사용하여 이미지를 엽니다.
  • 변수 img에 배열을 저장합니다.
  • 이미지를 로드한 후 bilateralFilter() 함수를 사용하여 Python에서 양방향 기능을 수행합니다. 실행 후 bilateralFilter() 함수는 처리된 이미지가 포함된 배열을 반환합니다.
  • 처리된 이미지를 얻은 후 imwrite() 함수를 사용하여 파일 시스템에 저장합니다. 이 함수는 출력 파일의 파일 이름을 포함하는 문자열을 첫 번째 입력 인수로 사용하고 처리된 이미지가 포함된 배열을 두 번째 입력으로 사용합니다. 논쟁. 기능을 실행한 후 파일은 파일 시스템에 저장됩니다.

아래는 Python에서 양방향 필터링을 수행하는 데 사용할 이미지입니다.

무늬

다음은 Python에서 양방향 필터링을 수행하는 코드입니다.

import cv2

img = cv2.imread("pattern.jpg")
output_image = cv2.bilateralFilter(img, 15, 100, 100)
cv2.imwrite("processed_image.jpg", output_image)

다음은 입력 이미지에 대해 양방향 필터링을 수행한 후 출력 이미지입니다.

양방향 필터 파이썬 처리 이미지

주어진 이미지에서 스트립의 특징이 출력 이미지에서 흐려지는 것을 관찰할 수 있습니다. 이는 출력 픽셀을 생성할 때 각 픽셀의 인접 픽셀을 고려하기 때문입니다.

픽셀을 평균화하면 흐릿한 효과가 나타나고 기능이 흐려집니다.

가우스 필터링과 비교할 때 양방향 필터링은 가장자리를 유지합니다. 따라서 평활화 작업을 수행하는 동안 이미지의 가장자리를 보존해야 하는 경우 항상 양방향 필터링을 사용할 수 있습니다.

작가: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub