728x90
import numpy as np
import cv2 as cv

Name = 'data/HazyTown.jpg'
img = cv.imread(Name)
img = img/255


def onChangeSigma(sigma):   # 시그마 트랙바 값 변동시 호출되는 함수
    blur = cv.GaussianBlur(src=img, ksize=(21, 21), sigmaX=sigma, borderType=cv.BORDER_REPLICATE)
    global UnsharpMaskImg
    UnsharpMaskImg = img - blur   # 고주파 영상
    global shw1
    shw1 = np.hstack((UnsharpMaskImg + 0.5, 3 * UnsharpMaskImg))
    cv.setWindowTitle('trackbar', 'UnsharpMaskImg')
    cv.imshow('trackbar', shw1)


def onChangeScale(scale):   # 스케일 트랙바 값 변동시 호출되는 함수
    SharpenedImg = img + scale * UnsharpMaskImg    # 샤프닝된 영상
    shw2 = np.hstack((img, SharpenedImg))
    shw = np.vstack((shw1, shw2))
    cv.imshow('trackbar', shw)


cv.namedWindow('trackbar')
cv.imshow('trackbar',img)

# 시그마 트랙바로 생성
cv.createTrackbar('sigma', 'trackbar', 0, 10, onChangeSigma)

# 스케일 트랙바로 생성
cv.createTrackbar('scale', 'trackbar', 0, 10, onChangeScale)

cv.waitKey(0)
cv.destroyAllWindows()

# UnsharpMasking

- 고주파 부분을 강조하여 대조비를 강화함

- 원본 영상에서 블러링 한 값을 빼서 선명하게 함

 

# 시그마와 스케일 트랙바 생성

- cv.createTrackbar('trackbarName', 'windowName', pos, value, callback) 함수를 사 용하여 생성

- 이 트랙바는 값이 변경이 있을 때만 함수를 호출하여 작업을 수행함

- 시그마와 스케일에 따른 각각의 작업을 하는 함수 작성함

 

# onChangeSigma(sigma)

- 시그마 트랙바 변동 시 호출되는 함수

- 시그마에 따른 블러링 영상 구함

- 원본영상에서 블러링 영상을 빼서 고주파 영상을 구함

- 고주파 영상에 0.5를 더한 영상과 3을 곱한 영상을 수평으로 연결하여 출력함

- 시그마 변동시 위의 2개의 영상이 출력됨

- 여기서 고주파 영상과 출력 영상을global로 출력하여 이 함수의 외부에서도 사용 가능하게 함(스케일 트랙바 함수에서도 사용하기 위함)

 

# onChangeScale(scale)

- 스케일 트랙바 변동 시 호출되는 함수

- 고주파 영상에 스케일링 한 후 원본 영상에 더하여 선명한 영상을 얻음

- 원본 영상과 선명한 영상을 출력함

- 이때 고주파 영상 2개와 같이 출력하였음

 

# 필요한 모듈 import

- numpy, cv2

 

# 실행 결과

- 초기 화면 (트랙바와 원본 영상 출력)

- 시그마 트랙바 값 변경 시 (고주파 영상 출력)

- 스케일 트랙바 값 변경 시 (고주파 영상, 원본영상, 선명한 영상 출력)

# 느낀 점

- 트랙 바를 생성하고 화면에 띄우는 것부터 많은 시행착오 겪음

- 따라서 트랙 바가 올바르게 생성되었을 때 매우 기뻤음

- 아직 cv의 함수들을 사용하는데에 어려운 것을 느낌

- 여러 자료들을 읽고 공부하며 기능을 알게 됨

- 정말 많은 기능들이 있다고 느꼈으나 아직은 잘 다루지 못함

- 영상처리에 대한 이론도 어렵지만 프로그램을 다루는 것 또한 어렵다는 것을 느낌

- 더 효율적인 프로그램의 예시가 궁금함

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기