OpenCV

[OpenCV] 이미지 처리 (Laplacian)

괜찮나요닝겐 2024. 8. 18. 12:48
728x90
반응형

오늘은 라플라시안을 통해 이미지에 블러 여부를 판단하는 로직을 만들어보자. 

 

라플라시안(Laplacian)이란 무엇인가? 

- 이미지의 2차 미분을 계산하여 픽셀의 밝기 변화를 강조하는 방법

 

 

  • 1차 미분과 경계 검출: 이미지의 밝기 값은 공간적으로 변환한다. 이 변화를 1차 미분하면 밝기 값이 급격히 변하는 위치, 즉 경계(edge)를 찾을 수 있다. 하지만 1차 미분은 밝기 변화의 방향에 민감하며, 노이즈에도 영향을 받을 수 있다.
  • 2차 미분과 라플라시안: 라플라시안 변환은 이미지의 2차 미분을 사용한다. 2차 미분은 이미지의 곡률을 측정하며, 밝기 값이 급격히 변하는 위치를 더욱 강조한다. 라플라시안 변환은 이미지에서 경계와 같은 고주파 성분을 추출하는 데 강력한 도구이다. 이 변환을 통해 이미지의 샤프니스나 블러를 측정할 수 있다.

 

import cv2

def is_blur(image_path, threshold=100.0):
    # 이미지 불러오기
    image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

    # 라플라시안(Laplacian) 변환 계산
    laplacian_var = cv2.Laplacian(image, cv2.CV_64F).var()

    # 라플라시안의 분산을 기준으로 블러 여부 판단
    if laplacian_var < threshold:
        return True, laplacian_var  # 블러 처리된 이미지로 판단
    else:
        return False, laplacian_var  # 블러 처리되지 않은 이미지로 판단

# 사용 예시
image_path = '/my_dir/blur_image.jpg'
is_blurred, variance = is_blur(image_path, threshold=100.0)

if is_blurred:
    print(f"The image is blurred. (Variance: {variance})")
else:
    print(f"The image is not blurred. (Variance: {variance})")

 

오늘은 여기까지

 

728x90
반응형