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의 함수들을 사용하는데에 어려운 것을 느낌
- 여러 자료들을 읽고 공부하며 기능을 알게 됨
- 정말 많은 기능들이 있다고 느꼈으나 아직은 잘 다루지 못함
- 영상처리에 대한 이론도 어렵지만 프로그램을 다루는 것 또한 어렵다는 것을 느낌
- 더 효율적인 프로그램의 예시가 궁금함
'전공 공부 > 영상처리' 카테고리의 다른 글
Chroma Key Editor (0) | 2020.12.29 |
---|---|
UnsharpMasking 커널 기반 처리(나만의 생각..) (0) | 2020.12.29 |
히스토그램 명세화 작업 후 r,g,b 채널별 히스토그램 출력 (0) | 2020.12.29 |
히스토그램 스트레칭 함수 구현 (0) | 2020.12.29 |
시그모이드 그래프 출력 (0) | 2020.12.21 |