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)

인기 글

태그

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

최근 글

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

끄적끄적 개발일지

[OpenCV with Python] 영상처리 : 명암비 조절
OpenCV

[OpenCV with Python] 영상처리 : 명암비 조절

2022. 2. 1. 13:02

명암비(Contrast)란?

  • 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이
  • 컨트라스트, 대비라고 한다.

 

 

기본적인 명암비 조절 함수

 

 

효과적인 명암비 조절 함수 - np.clip

그레이스케일의 픽셀값을 조정하여 명암비를 조절하는 법으로, np.clip으로 saturate 연산을 구현하였고 아래의 방정식을 구현하였다.

alpha값을 변경해주면서 원하는 명암비를 설정해줄 수 있다. 

 

 

 

💬  실습

src = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE)

alpha = 1.0
dst = np.clip((1 + alpha) * src - 128 * alpha, 0, 255).astype(np.uint8)

 

 

 

 


영상의 자동 명암비 조절

 

히스토그램 스트레칭(Histogram stretching)

  • 영상의 히스토그램이 그레이스케일 전 구간에서 걸쳐 나타나도록 변경하는 선형 변환 기법

 

 

✔︎  정규화 함수  -  cv2.normalize

cv2.normalize(src,
              dst,
              alpha=None,
              beta=None,
              norm_type=None,
              dtype=None,
              mask=None)
  • src : 입력 영상
  • dst : 결과 영상
  • alpha : (노름 정규화인 경우) 목표 노름 값 
              (원소 값 범위 정규화인 경우) 최솟값
  • beta : (원소 값 범위 정규화인 경우) 최댓값
  • norm_type :  정규화 타입. NORM_INF, NORM_L1, NORM_L2, NORM_MINMAX.
  • dtype : 결과 영상의 타입
  • mask : 마스크 영상

 

💬  실습

src = cv2.imread('Hawkes.jpg', cv2.IMREAD_GRAYSCALE)

if src is None:
    print('Image load failed!')
    sys.exit()
    
dst = cv2.normalize(src, None, 0, 255, cv2.NORM_MINMAX) # 히스토그램 스트레칭은 NORM_MINMAX

# 넘파이로 히스토그램 스트레칭 구현
gmin = np.min(src)
gmax = np.max(src)
dst = np.clip((src - gmin) * 255. / (gmax - gmin), 0, 255).astype(np.unit8))

cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()

cv2.destroyAllWindows()

 

 

'OpenCV' 카테고리의 다른 글

[OpenCV with Python]영상처리 : 특정 색상 영역 추출  (0) 2022.02.01
[OpenCV with Python] 영상처리 : 히스토그램 평활화 Histogram equalization  (0) 2022.02.01
[OpenCV with Python] 영상처리 : 히스토그램 분석  (0) 2022.02.01
[OpenCV with Python] 영상처리 : 컬러 영상과 색 공간  (0) 2022.02.01
[OpenCV with Python] 영상처리 : 영상의 산술 및 논리 연산  (0) 2022.01.31
    AI 그게 뭔데
    AI 그게 뭔데
    공부와 개발 그리고 AI가 약간 첨가된 흔적 남기기

    티스토리툴바