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
반응형
'OpenCV' 카테고리의 다른 글
[OpenCV] 이미지 처리 (GrabCut) (0) | 2024.08.18 |
---|---|
[OpenCV] 이미지 처리 (Canny) (0) | 2024.08.18 |
[OpenCV] 이미지 처리 (비디오 crop) (0) | 2024.08.18 |
[OpenCV] 이미지 처리 (비디오) (0) | 2024.08.18 |
[OpenCV] 이미지 처리 (자동보정) (0) | 2024.08.17 |