블러(흐림) 점수 출력

김성빈·2024년 5월 22일
0

Modern Computer Vision

목록 보기
42/117

블러 이미지 생성

블러(흐릿)를 감지하기 위해 정도를 다르게 한 블러 이미지를 생성했다.

# Load our input image
image = cv2.imread('./images/liberty.jpeg')
imshow("Original Image", image)

blur_1 = cv2.GaussianBlur(image, (5,5), 0)
imshow('Blurred Image 1', blur_1) 

blur_2 = cv2.GaussianBlur(image, (9,9), 0)
imshow('Blurred Image 2', blur_2) 

blur_3 = cv2.GaussianBlur(image, (13,13), 0)
imshow('Blurred Image 3', blur_3) 

블러 점수 계산 함수 정의

def getBlurScore(image):
    if len(image.shape) == 3:
        image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return cv2.Laplacian(image, cv2.CV_64F).var()
  1. 입력 이미지 확인 및 그레이스케일 변환
    이미지가 컬러(BGR) 이미지인 경우(image.shape의 길이가 3인 경우),
    cv2.cvtColor를 사용하여 그레이스케일로 변환

  2. 라플라시안 변환 및 분산 계산
    cv2.Laplacian을 사용하여 이미지의 2차 미분(라플라시안)을 계산합니다. 이는 이미지에서 급격한 밝기 변화(에지)를 강조
    .var()를 사용하여 라플라시안 이미지의 분산(variance)을 계산합니다. 이 값이 블러 점수가 된다.

블러 점수 출력

print("Blur Score = {}".format(getBlurScore(image)))
print("Blur Score = {}".format(getBlurScore(blur_1)))
print("Blur Score = {}".format(getBlurScore(blur_2)))
print("Blur Score = {}".format(getBlurScore(blur_3)))

Blur Score = 894.1643803618214
Blur Score = 64.20102699531715
Blur Score = 15.320655906666655
Blur Score = 6.565761708892717

원본 이미지 일 수록(깨끗한 이미지) 블러 점수가 낮았다.

블러 점수 해석을 하자면,

높은 블러 점수: 이미지가 초점이 맞고 날카로울 가능성이 크다.
낮은 블러 점수: 이미지가 흐릿하고 블러가 많이 적용되었을 가능성이 크다.

profile
감사합니다. https://www.youtube.com/channel/UCxlkiu9_aWijoD7BannNM7w

0개의 댓글