- 언샤프 마스크(Unsharp mask) 필터링
- 날카롭지 않은(unshape) 영상, 즉, 부드러워진 영상을 이용하여 날카로운 영상을 생성
- 언샤프 마스크 필터 구현하기
import sys
import numpy as np
import cv2
src = cv2.imread('rose.bmp', cv2.IMREAD_GRAYSCALE)
if src is None:
print('Image load failed!')
sys.exit()
blr=cv2.GaussianBlur(src,(0,0),3)
dst=np.clip(2.*src-blr,0,255).astype(np.uint8)
# dst=cv2.addWeighted(src,2,blr,-1,0)
cv2.imshow('src',src)
cv2.imshow('dst',dst)
cv2.waitKey()
cv2.destroyAllWindows()
앞선 필터링 보다 더 날카로운 느낌을 갖는다
- 컬러 영상에 대한 언샤프 마스크 필터 구현하기
import sys
import numpy as np
import cv2
src = cv2.imread('rose.bmp')
if src is None:
print('Image load failed!')
sys.exit()
# 컬러영상
src_ycrcb = cv2.cvtColor(src, cv2.COLOR_BGR2YCrCb)
#중간단계는 실수로 가져가고 최종 단계에서 정수형으로 바꿔주는 기법(정확성을 위해서)
src_f = src_ycrcb[:, :, 0].astype(np.float32) #색상좌표중 첫번째
blr = cv2.GaussianBlur(src_f, (0, 0), 2.0)
src_ycrcb[:, :, 0] = np.clip(2. * src_f - blr, 0, 255).astype(np.uint8)
dst = cv2.cvtColor(src_ycrcb, cv2.COLOR_YCrCb2BGR)
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
<참고사항>
계산 과정에서 실수형으로 계산을 하면 좀더 정확한 결과를 얻을 수 있다. 다만 마지막에는 정수형으로 다시 변환해주 어야 한다
'Computer Vision > opencv(python)' 카테고리의 다른 글
[26] 6) 잡음제거 - 양방향 필터 (0) | 2021.03.19 |
---|---|
[25] 5) 잡음제거 - 미디언 필터 (0) | 2021.03.19 |
[23] 3)블러링 - 가우시안 필터 (0) | 2021.03.19 |
[22] 2)블러링-평균값 필터 (0) | 2021.03.19 |
[21] 4.필터링 1)필터링 이해하기 (0) | 2021.03.19 |