AI 그게 뭔데
끄적끄적 개발일지
AI 그게 뭔데
전체 방문자
오늘
어제
  • 분류 전체보기 (342)
    • 논문 (5)
    • DL(Deep-Learning) (34)
      • 개념 (14)
      • Python 기초 (14)
      • Tensorflow (6)
      • Pytorch (0)
    • NLP (10)
    • OpenCV (53)
    • DevOps (10)
      • AWS (2)
      • Docker & Kubernetes (4)
      • Spark (3)
      • SQL (1)
    • MacOS (1)
    • React-Native (2)
    • BI (3)
      • GA(Google Analytics) (3)
      • Tableau (0)
    • 알고리즘 (221)
      • 백준 (76)
      • 프로그래머스 (108)
      • 기타 알고리즘 (37)

인기 글

태그

  • LEVEL2
  • 프로그래머스
  • 알고리즘
  • level1
  • OpenCV
  • 연습문제
  • 백준
  • 이코테
  • 파이썬
  • Python

최근 글

hELLO · Designed By 정상우.
AI 그게 뭔데

끄적끄적 개발일지

[OpenCV with Python] Filtering : 영상에 샤프닝 적용 - Unsharp Mask
OpenCV

[OpenCV with Python] Filtering : 영상에 샤프닝 적용 - Unsharp Mask

2022. 2. 1. 22:23

영상에 샤프닝을 적용하기 위해 언샤프 마스크가 필요하다.

 

언샤프 마스크 필터링(Unsharp Mask Filtering)은 날카롭지 않은(unsharp) 영상, 즉 부드러워진 영상을 이용하여 날카로운 영상을 생성한다.

 

언샤프 마스크 필터 Unsharp Mask Filtering

 언샤프 마스크 필터는 기존 영상의 픽셀 + (기존 영상의 픽셀 - 가우시안 필터링으로 블러가 적용된 영상의 픽셀) 로 만들 수 있다.

 

 - 기존 영상의 픽셀에서 픽셀 값이 변화하는 구간

기존 영상의 픽셀

 - 가우시안 필터가 적용된 픽셀 값

가우시안 필터가 적용된 픽셀

 

 - 기존 영상의 픽셀 - 가우시안 필터가 적용된 픽셀 값

기존 영상 픽셀 - 가우시간 필터가 적용된 픽셀

 

➡️ 위 사진을 기존 영상의 픽셀에 더해주면 언샤프 마스크 필터가 된다.

언샤프 마스크 필터

 

 

✔︎  언샤프 마스크 필터 구현 -  np.clip

np.clip 함수로 언샤프 마스크 필터를 구현할 수 있다.

np.clip을 이용하는 이유는 saturate연산이 가능하기 때문!

 

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), 2)
dst = np.clip(2.0*src - blr, 0, 255).astype(np.uint8)

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()

 

⬇️

'OpenCV' 카테고리의 다른 글

[OpenCV with Python] Filtering : Noise 제거 - 양방향 필터 Bilateral Filter  (0) 2022.02.01
[OpenCV with Python] Filtering : Noise 제거 - Median Filter  (0) 2022.02.01
[OpenCV with Python] Filtering : Blurring - 가우시안 필터 Gaussian Filter  (0) 2022.02.01
[OpenCV with Python] Filtering : 블러링(blurring) - 평균값 필터  (0) 2022.02.01
[OpenCV with Python] Filtering : 필터링이란?  (0) 2022.02.01
    AI 그게 뭔데
    AI 그게 뭔데
    공부와 개발 그리고 AI가 약간 첨가된 흔적 남기기

    티스토리툴바