파이썬 python/opencv

cv2 Trackbar를 이용해서 샤프닝 필터 구현하기(unsharpening) - 컬러버전

Aytekin 2023. 5. 5. 08:58
728x90

샤프닝에 대한 자세한 설명 참고 

https://aytekin.tistory.com/121

 

cv2 Trackbar를 이용해서 샤프닝 필터 구현하기(unsharpening)

아래 스크린샷과 코드 일부분은 황선규 박사님의 fastcampus opencv강의를 참조하여 unsharpening 필터링을 구현한 것입니다. 1. 샤프닝 필터란? 간단하게 이야기해서 이미지를 말 그대로 날카롭게 만들

aytekin.tistory.com

 

결과

원본이미지


 

코드전문

import sys
import numpy as np
import cv2

# 슬라이드 바를 이용해서 alpha값을 조정하도록 하고 그 결과로 sharpening 정도를 조절하도록 구현해보기.
# color 이미지

src = cv2.imread('rose.bmp')

if src is None:
    print('Image load failed!')
    sys.exit()

cv2.namedWindow("TrackBar Windows")
cv2.createTrackbar("alpha","TrackBar Windows",0,10, lambda x: x)
cv2.createTrackbar("sigma","TrackBar Windows",0,5, lambda x: x)
cv2.setTrackbarPos("alpha","TrackBar Windows",0)
cv2.setTrackbarPos("sigma","TrackBar Windows",1)
cv2.setTrackbarMin("sigma","TrackBar Windows",1)

while cv2.waitKey(1) != ord('q'):
    alpha = cv2.getTrackbarPos('alpha','TrackBar Windows') * 0.5
    sigma = cv2.getTrackbarPos('sigma','TrackBar Windows') * 0.5
    src_ycrcb = cv2.cvtColor(src, cv2.COLOR_BGR2YCrCb)

    src_f = src_ycrcb[:, :, 0].astype(np.float32)

    blr = cv2.GaussianBlur(src_f, (0,0), sigma)
    src_ycrcb[:, :, 0] = np.clip((1+alpha)*src_f - (alpha * blr), 0, 255).astype(np.uint8) # 2.*src - blr 이 수식이 sharpening해주는 부분
    dst = cv2.cvtColor(src_ycrcb, cv2.COLOR_YCrCb2BGR)

    cv2.imshow('src',src)
    cv2.imshow('blr',src_ycrcb[:, :, 0])

    cv2.putText(dst,'alpha : {}, sigma : {}'.format(alpha, sigma),(10,25),cv2.FONT_HERSHEY_SIMPLEX,1, (255,255,255), 2, cv2.LINE_AA)
    cv2.imshow("TrackBar Windows", dst)

cv2.destroyAllWindows()
728x90