Top 24 Opencv 명암 대비 All Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me opencv 명암 대비 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: opencv 명암 대비 OpenCV 대비 조절, OpenCV 이미지 평균 밝기, OpenCV C++ 밝기 조절, OpenCV 오버플로우, 명암대비 차이, 명암 대비 스트레칭, Python OpenCV Contrast 조절, OpenCV 이미지 밝기 측정


파이썬 코딩 무료 강의 (활용편6) – OpenCV 이미지 처리, 얼굴 인식을 통한 캐릭터 씌우기를 해보아요
파이썬 코딩 무료 강의 (활용편6) – OpenCV 이미지 처리, 얼굴 인식을 통한 캐릭터 씌우기를 해보아요


OpenCV – 영상 명암 대비 조절하기 : 네이버 블로그

  • Article author: m.blog.naver.com
  • Reviews from users: 49033 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about OpenCV – 영상 명암 대비 조절하기 : 네이버 블로그 이번 글에서는 OpenCV를 사용하여 영상 명암 대비 조절을 해보려고 합니다. 명암 대비(contrast)는 상이한 두 가지 색(밝기)이 경계에서 서로 영향을 … …
  • Most searched keywords: Whether you are looking for OpenCV – 영상 명암 대비 조절하기 : 네이버 블로그 이번 글에서는 OpenCV를 사용하여 영상 명암 대비 조절을 해보려고 합니다. 명암 대비(contrast)는 상이한 두 가지 색(밝기)이 경계에서 서로 영향을 …
  • Table of Contents:

카테고리 이동

개발자의 개발 정보와 리뷰

이 블로그 
CC++ 영상처리
 카테고리 글

카테고리

이 블로그 
CC++ 영상처리
 카테고리 글

OpenCV - 영상 명암 대비 조절하기 : 네이버 블로그
OpenCV – 영상 명암 대비 조절하기 : 네이버 블로그

Read More

OpenCV – 영상의 밝기/명암 조절 – 루카쓰로그

  • Article author: lucathree.github.io
  • Reviews from users: 3759 ⭐ Ratings
  • Top rated: 3.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about OpenCV – 영상의 밝기/명암 조절 – 루카쓰로그 이미지 명암비(대비) 조절Permalink. 명암비 = 이미지의 밝은 부분과 어두운 부분의 밝기 차를 의미. 명암비 조절은 이미지의 밝은 부분은 … …
  • Most searched keywords: Whether you are looking for OpenCV – 영상의 밝기/명암 조절 – 루카쓰로그 이미지 명암비(대비) 조절Permalink. 명암비 = 이미지의 밝은 부분과 어두운 부분의 밝기 차를 의미. 명암비 조절은 이미지의 밝은 부분은 … 파이썬 OpenCV 6. 영상의 밝기, 명암 조절 및 히스토그램 분석 활용하기
  • Table of Contents:

Skip links

이미지 밝기 조절

이미지 명암비(대비) 조절

히스토그램 분석

무엇을 공부할 것인가

22년 5월 마지막주 화요일 – ospathjoin() OOPCBVFBV 능동적 주니어

22년 5월 마지막주 월요일 – 좋은 DB설계란 무엇인가

HTTP 프로토콜

OpenCV - 영상의 밝기/명암 조절 - 루카쓰로그
OpenCV – 영상의 밝기/명암 조절 – 루카쓰로그

Read More

OpenCV Python 영상 명암비 조절(정규화)

  • Article author: wjh2307.tistory.com
  • Reviews from users: 3978 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about OpenCV Python 영상 명암비 조절(정규화) OpenCV Python 영상 명암비 조절(정규화). rkftks22 2021. 8. … IMREAD_GRAYSCALE) alpha1 = -0.5 # 명암 조정값 alpha2 = 1.0 # 명암 조정값 dst1 … …
  • Most searched keywords: Whether you are looking for OpenCV Python 영상 명암비 조절(정규화) OpenCV Python 영상 명암비 조절(정규화). rkftks22 2021. 8. … IMREAD_GRAYSCALE) alpha1 = -0.5 # 명암 조정값 alpha2 = 1.0 # 명암 조정값 dst1 … 명암비 : 밝은 곳, 어두운 곳 사이의 밝기 정도 차이 1) 명암비 조절 : dst(x, y) = saturate(s*src(x, y)) 기울기가 작아 확 어두워지거나 기울기가 커서 값들이 대부분의 픽셀 값이 255가 되어 너무 밝아지겠..
  • Table of Contents:

태그

‘OpenCV-Python’ Related Articles

OpenCV Python 영상 명암비 조절(정규화)
OpenCV Python 영상 명암비 조절(정규화)

Read More

영상의 명암비(Contrast) 조절

  • Article author: overface.tistory.com
  • Reviews from users: 43595 ⭐ Ratings
  • Top rated: 3.5 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 영상의 명암비(Contrast) 조절 컨트라스트, 대비라고 도 한다. … #OpenCV 히스토그램 구하기 /* images: 입력 영상 리스트 channels: 히스토그램을 구할 채널을 나타내는 리스트 … …
  • Most searched keywords: Whether you are looking for 영상의 명암비(Contrast) 조절 컨트라스트, 대비라고 도 한다. … #OpenCV 히스토그램 구하기 /* images: 입력 영상 리스트 channels: 히스토그램을 구할 채널을 나타내는 리스트 … 명암비(Contrast)란? 밝은 곳과 어두운 곳 사이에 드러나 는 밝기 정도의 차이이다. 컨트라스트, 대비라고 도 한다. dst(x, y) = saturate(s * src(s, y)) #s 라는 scaling factor 를 사용하여 곱셈을 한다. s ..
  • Table of Contents:

고정 헤더 영역

메뉴 레이어

검색 레이어

상세 컨텐츠

명암비(Contrast)란

효과적인 명암비 조절 함수

태그

추가 정보

페이징

티스토리툴바

영상의 명암비(Contrast) 조절
영상의 명암비(Contrast) 조절

Read More

파이썬 openCV 5. 명암대비 스트레칭(streching)

  • Article author: marisara.tistory.com
  • Reviews from users: 25786 ⭐ Ratings
  • Top rated: 3.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 파이썬 openCV 5. 명암대비 스트레칭(streching) 파이썬 openCV 5번째 강의는 명암대비 스트레칭입니다. 여러분들도 근육이 뭉쳤을때 스트레칭을 통해 근육을 풀어주곤 하죠? …
  • Most searched keywords: Whether you are looking for 파이썬 openCV 5. 명암대비 스트레칭(streching) 파이썬 openCV 5번째 강의는 명암대비 스트레칭입니다. 여러분들도 근육이 뭉쳤을때 스트레칭을 통해 근육을 풀어주곤 하죠? 파이썬 openCV 5번째 강의는 명암대비 스트레칭입니다. 여러분들도 근육이 뭉쳤을때 스트레칭을 통해 근육을 풀어주곤 하죠? 이미지도 마찬가지로 스트레칭이 가능한데요. 이번 시간에 스트레칭중 명암대비 스트레..IT와 게임을 좋아하는 사람
  • Table of Contents:

파이썬 openCV 5 명암대비 스트레칭(streching)

티스토리툴바

파이썬 openCV 5. 명암대비 스트레칭(streching)
파이썬 openCV 5. 명암대비 스트레칭(streching)

Read More

[파이썬 OpenCV] 영상의 명암비 조절 – 히스토그램 스트레칭, 정규화(cv2.normalize)

  • Article author: deep-learning-study.tistory.com
  • Reviews from users: 5374 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [파이썬 OpenCV] 영상의 명암비 조절 – 히스토그램 스트레칭, 정규화(cv2.normalize) 황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 영상의 명암비 조절 명암비(Contrast)는 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도 … …
  • Most searched keywords: Whether you are looking for [파이썬 OpenCV] 영상의 명암비 조절 – 히스토그램 스트레칭, 정규화(cv2.normalize) 황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 영상의 명암비 조절 명암비(Contrast)는 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도 … 황선규 박사님의 OpenCV 강의를 공부하면서 정리하였습니다. 영상의 명암비 조절  명암비(Contrast)는 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이를 의미합니다. 1. 기본적인 명암비 조절 – np.clip..까먹으면 다시 보려고 정리하는 블로그
  • Table of Contents:
[파이썬 OpenCV] 영상의 명암비 조절 – 히스토그램 스트레칭 정규화(cv2normalize)

영상의 명암비 조절

티스토리툴바

[파이썬 OpenCV] 영상의 명암비 조절 - 히스토그램 스트레칭, 정규화(cv2.normalize)
[파이썬 OpenCV] 영상의 명암비 조절 – 히스토그램 스트레칭, 정규화(cv2.normalize)

Read More

OpenCV | 영상의 명암비 조절

  • Article author: velog.io
  • Reviews from users: 35291 ⭐ Ratings
  • Top rated: 3.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about OpenCV | 영상의 명암비 조절 명암비란 영상에서 밝은 영역과 어두운 영역사이에 드러나는 밝기 차이의 강도를 의미하고, 명암 대비 또는 콘트라스트 라고도 한다. …
  • Most searched keywords: Whether you are looking for OpenCV | 영상의 명암비 조절 명암비란 영상에서 밝은 영역과 어두운 영역사이에 드러나는 밝기 차이의 강도를 의미하고, 명암 대비 또는 콘트라스트 라고도 한다. 명암비란 영상에서 밝은 영역과 어두운 영역사이에 드러나는 밝기 차이의 강도를 의미하고, 명암 대비 또는 콘트라스트 라고도 한다. 밝은 영역과 어두운 영역이 골고루 섞여 있으면 명암비가 높다고 말한다. 영상의 밝기 조절은 모든 픽셀에서 정수 값을 더하거나 빼는 연산을 했
  • Table of Contents:
OpenCV | 영상의 명암비 조절
OpenCV | 영상의 명암비 조절

Read More

[OpenCV] 영상 밝기/명암비, 히스토그램

  • Article author: junstar92.tistory.com
  • Reviews from users: 23009 ⭐ Ratings
  • Top rated: 3.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [OpenCV] 영상 밝기/명암비, 히스토그램 이번에는 OpenCV에서 제공하는 영상 밝기 조절 기법과 사용자가 직접 영상 … 강도를 의미하고, 명암 대비 또는 콘트라스트(contrast)라고도 합니다. …
  • Most searched keywords: Whether you are looking for [OpenCV] 영상 밝기/명암비, 히스토그램 이번에는 OpenCV에서 제공하는 영상 밝기 조절 기법과 사용자가 직접 영상 … 강도를 의미하고, 명암 대비 또는 콘트라스트(contrast)라고도 합니다. References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents 영상의 밝기/명암비 조절 히스토그램 분석 영상의 밝기 조절 영상의 밝기 조절은 행..
  • Table of Contents:

영상의 밝기 조절

영상의 명암비 조절

히스토그램 분석

태그

관련글

댓글0

공지사항

최근글

인기글

최근댓글

태그

전체 방문자

[OpenCV] 영상 밝기/명암비, 히스토그램
[OpenCV] 영상 밝기/명암비, 히스토그램

Read More

[OpenCV with Python] 영상처리 : 명암비 조절 — 끄적끄적 개발일지

  • Article author: yuls-with-ai.tistory.com
  • Reviews from users: 30301 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [OpenCV with Python] 영상처리 : 명암비 조절 — 끄적끄적 개발일지 명암비(Contrast)란? 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이; 컨트라스트, 대비라고 한다. 기본적인 명암비 조절 함수 … …
  • Most searched keywords: Whether you are looking for [OpenCV with Python] 영상처리 : 명암비 조절 — 끄적끄적 개발일지 명암비(Contrast)란? 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이; 컨트라스트, 대비라고 한다. 기본적인 명암비 조절 함수 … 명암비(Contrast)란? 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이 컨트라스트, 대비라고 한다. 기본적인 명암비 조절 함수 효과적인 명암비 조절 함수 – np.clip 그레이스케일의 픽셀값을 조정..
  • Table of Contents:

인기 글

태그

최근 글

[OpenCV with Python] 영상처리 : 명암비 조절 — 끄적끄적 개발일지
[OpenCV with Python] 영상처리 : 명암비 조절 — 끄적끄적 개발일지

Read More

[OpenCV] 밝기와 명암

  • Article author: zzzinho.tistory.com
  • Reviews from users: 48861 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about [OpenCV] 밝기와 명암 파일을 읽어올때 채널(channel) 차원을 1로해서 읽어와야 그레이스케일 영상을 받아올 수 있다. 그레이스케일을 입력받는 함수에 컬러 영상을 입력하면 … …
  • Most searched keywords: Whether you are looking for [OpenCV] 밝기와 명암 파일을 읽어올때 채널(channel) 차원을 1로해서 읽어와야 그레이스케일 영상을 받아올 수 있다. 그레이스케일을 입력받는 함수에 컬러 영상을 입력하면 … 1. Grayscale 영상 다루기 파일을 읽어올때 채널(channel) 차원을 1로해서 읽어와야 그레이스케일 영상을 받아올 수 있다. 그레이스케일을 입력받는 함수에 컬러 영상을 입력하면 에러가 발생해 프로그램이 종료..
  • Table of Contents:

트렉바를 이용해서 밝기 조절하기

효과적인 명암비 조절

심심해서 해봤다

태그

관련글

댓글0

전체 방문자

태그

최근댓글

티스토리툴바

[OpenCV] 밝기와 명암
[OpenCV] 밝기와 명암

Read More


See more articles in the same category here: Chewathai27.com/to/blog.

OpenCV – 영상의 밝기/명암 조절

이미지 밝기 조절

픽셀값은 255에 가까울수록 밝고, 0에 가까울수록 어둡다. 이 점을 활용하여 픽셀 값에 값을 더하거나 빼줌으로서 이미지의 밝기 조절이 가능하다.

img = cv2 . imread ( ‘a.jpg’ ) img2 = img + 20 #이미지 밝게 처리 img3 = img – 20 #이미지 어둡게 처리

포화연산

그런데, 색상 값은 0-255 사이의 값을 가지는데 +, – 연산을 수행하면 0보다 작거나 255보다 큰 값을 만들어낼 수도 있다.

하지만 이미지 값의 타입은 uint8, 8비트 숫자 255까지만 표현이 가능하기 때문에 256은 이진수로 100000000(2) 9비트가 필요하여 uint8 형식에서는 다시 0이 된다. 이렇게 처리되면 아주 밝은 부분이 아주 어둡게, 또는 아주 어두운 부분이 아주 밝게 반대로 표현되어 이미지가 변질된다.

그래서 픽셀값이 255를 넘으면 255로, 0 미만이면 0으로 처리하는 것이 포화연산이다.

np.clip을 활용한 포화연산

# np.clip(src, 최소값, 최대값) import numpy as np arr = np . array ([ – 12 , 213 , 307 ]) arr2 = np . clip ( arr , 0 , 255 ) arr2 >>> array ([ 0 , 213 , 255 ])

주의할 점

#1 img2 = img + 100 img3 = np . clip ( img2 , 0 , 255 ) #2 img2 = np . clip ( img + 100 , 0 , 255 ) #3 img2 = img . astype ( ‘int32’ ) img3 = np . clip ( img2 , 0 , 255 ) img3 = img3 . astype ( ‘uint8’ )

위 #1 처럼 코드를 작성할 경우 이미 img2는 uint8로 처리가 되어있기 때문에 np.clip을 해도 소용이 없다. #2 처럼 np.clip 안에서 연산을 진행시키거나 #3 처럼 이미지 타입을 uint8이 아닌 다른 것으로 변환시켜준 후 np.clip을 사용해준 뒤 다시 uint8로 돌려주면 된다.

이미지 명암비(대비) 조절

명암비 = 이미지의 밝은 부분과 어두운 부분의 밝기 차를 의미.

명암비 조절은 이미지의 밝은 부분은 더 밝게, 어두운 부분은 더 어둡게 함으로써 이미지 윤곽을 뚜렷하게 해주어 활용도가 높다.

색상 값을 곱해주기

def saturate_contrast1 ( p , num ): pic = p . copy () pic = pic . astype ( ‘int64’ ) pic = np . clip ( pic * num , 0 , 255 ) pic = pic . astype ( ‘uint8’ ) return pic #명암비를 1보다 작게 주면 밝기 차가 줄어들고 전반적으로 어두어짐 img4 = saturate_contrast1 ( img , 0.5 ) #명암비를 1보다 크게 주면 밝기 차가 커지고 흰색 영역이 넓어짐 img5 = saturate_contrast1 ( img , 2 )

값이 클 수록 배수의 값도 더 커지기 때문에 밝은 부분은 더 밝게, 어두운 부분은 덜 밝게 하는 것이 가능하다.

하지만 밝은 부분은 더 밝게 하고 어두운 부분을 더 어둡게 하는 것은 이 방식으로 되지 않는다.

명암비의 효율적 조절

명암 차이를 크게 만들기 위해서는 밝은 부분은 더 밝게 해주고, 어두운 부분은 더 어둡게 해줘야 한다. 밝고 어두움의 기준으로 0~255의 중간 값인 128을 사용하고, 128보다 더 큰 값은 더 밝게 만들고 128보다 작은 값은 더 어둡게 만들어 대비를 더 크게 만들어주면 된다.

** dst ( x , y ) = src ( x , y ) + ( src ( x , y ) – 128 ) * alpha ** # src(x,y)-128 을 통해 128보다 작은 값은 음수로 만들고 128보다 큰 값은 양수로 만든다 # alpha는 대비를 얼마나 크게 만들 것인지 결정하는 -1 보다 같거나 큰 실수

def saturate_contrast2 ( p , num ): pic = p . copy () pic = pic . astype ( ‘int32’ ) pic = np . clip ( pic + ( pic – 128 ) * num , 0 , 255 ) pic = pic . astype ( ‘uint8’ ) return pic img4 = saturate_contrast2 ( img , – 0.5 ) img5 = saturate_contrast2 ( img , 2 )

히스토그램 분석

주어진 영상의 픽셀 밝기 분포를 조사하여 밝기 및 명암비를 조절할 수 있다.

히스토그램 구하기

히스토그램: 영상의 픽셀 값 분포를 그래프 형태로 표현한 것. 모든 픽셀의 밝기 값들을 구한 후 밝기 값 마다의 픽셀 개수를 세어서 그래프를 구성한다.

히스토그램에서 가로축을 히스토그램의 빈(bin) 이라고 하며 그레이스케일 영상의 경우 256개의 빈을 가진 히스토그램을 구하는 것이 일반적이지만 경우에 따라서 빈 개수를 다르게 할 수도 있다.

히스토그램은 다음 함수를 사용하여 계산한다.

cv2.calcHist([img], channel, mask, histSize, range)

img: 이미지 배열

이미지 배열 channel: 분설할 색상 채널

분설할 색상 채널 mask: 분석할 영역. None이면 이미지 전체를 의미

분석할 영역. None이면 이미지 전체를 의미 histSize: 히스토그램의 크기 = 빈의 개수

히스토그램의 크기 = 빈의 개수 range: x축 값 범위

사용 예

import cv2 from matplotlib import pyplot as plt img = cv2 . imread ( ‘img/lenna.png’ , 0 ) ** hist = cv2 . calcHist ([ img ], [ 0 ], None , [ 256 ], [ 0 , 255 ]) ** plt . subplot ( 2 , 1 , 1 ), plt . imshow ( img , ‘gray’ ) plt . subplot ( 2 , 1 , 2 ), plt . plot ( hist ) plt . xlim ([ 0 , 255 ]) plt . show ()

위 이미지의 밝기를 조절할 경우, 더 밝게 한 경우는 히스토그램이 전체적으로 오른쪽으로 이동하고 더 어둡게 한 경우는 히스토그램이 전체적으로 왼쪽으로 이동한다.

명암비를 크게 주면 분포가 아주 밝고 아주 어두운 쪽으로 이동하게 되며,

img = saturate_contrast2 ( img , 2 ) # 위에서 사용했던 명암비 조절 함수, 명암비 2 hist = cv2 . calcHist ([ img ],[ 0 ], None ,[ 256 ],[ 0 , 256 ]) plt . subplot ( 2 , 1 , 1 ), plt . imshow ( img4 , ‘gray’ ) plt . subplot ( 2 , 1 , 2 ), plt . plot ( hist , color = ‘r’ ) plt . xlim ([ 0 , 256 ]) plt . show ()

명암비를 줄이면 분포 영역이 더 작아진다. 이는 이미지 색상이 비슷한 값에 몰려있다는 뜻이며 이미지가 선명하지 않음을 나타낸다.

img = saturate_contrast2 ( img , – 0.8 ) # 위에서 사용했던 명암비 조절 함수, 명암비 -0.8 hist = cv2 . calcHist ([ img ],[ 0 ], None ,[ 256 ],[ 0 , 256 ]) plt . subplot ( 2 , 1 , 1 ), plt . imshow ( img4 , ‘gray’ ) plt . subplot ( 2 , 1 , 2 ), plt . plot ( hist , color = ‘r’ ) plt . xlim ([ 0 , 256 ]) plt . show ()

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

위 이미지 처럼 명암비가 낮아 히스토그램이 특정 구간에 집중되어 있을 때 히스토그램을 펼쳐서 그래프가 그레이스케일 전 구간에서 나타나도록 변환하는 기법을 히스토그램 스트레칭이라 한다.

히스토그램 스트레칭을 수행하면 명암비가 높아지기 때문에 흐릿한 이미지가 더 선명해진다.

히스토그램 스트레칭을 수식으로 표현하면 다음과 같다.

** dst ( x , y ) = (( src ( x , y ) – 최소픽셀값 ) / ( 최대픽셀값 – 최소픽셀값 )) * 255 **

원본(src)에서 최소픽셀값을 빼 결과물(dst)의 최소픽셀값이 0이 되도록 하고, 히스토그램의 범위(최대픽셀값 – 최소픽셀값)로 나눈 값에 255를 곱해 결과물(dst)의 최대픽셀값은 255가 되도록 한다.

이 과정을 코드로 구현하면 다음과 같다

f_max = src . max () # 최대픽셀값 f_min = src . min () # 최소픽셀값 nframe = img . astype ( ‘int64’ ) dst = np . clip ((( nframe – f_min ) / ( f_max – f_min )) * 255 , 0 , 255 ). astype ( ‘uint8’ ) hist = cv2 . calcHist ([ dst ],[ 0 ], None ,[ 256 ],[ 0 , 256 ]) plt . subplot ( 2 , 1 , 1 ), plt . imshow ( dst ) plt . subplot ( 2 , 1 , 2 ), plt . plot ( hist , color = ‘r’ ) plt . xlim ([ 0 , 256 ]) plt . show ()

히스토그램 평활화 (histogram equalization)

히스토그램 스트레칭은 분포도를 넓혀주지만 특정 그레이스케일 값에 픽셀 분포가 너무 뭉쳐있는 경우 이를 평준화 해주지는 않는다. 히스토그램 평활화는 그래프에서 너무 돌출되는 부분을 깎아주어 평준화해준다.

이는 다음 수식을 사용한다.

** dst ( x , y ) = round (( 누적합 ( src ( x , y )) * 픽셀최대값 ) / 픽셀누적최대값 – 최소값 ) **

그리고 수식을 코드로 구현할 경우 다음과 같다.

hist , bins = np . histogram ( src . flatten (), 256 ,[ 0 , 255 ]) cdf = hist . cumsum () # 누적합. 각 빈의 누적합 계산 cdf_m = np . ma . masked_equal ( cdf , 0 ) # 속도개선을 위해 0인 부분 제외 #히스토그램 평활화 cdf_m = ( cdf_m – cdf_m . min ()) * 255 / ( cdf_m . max () – cdf_m . min ()) # Mask처리를 했던 부분을 다시 0으로 변환 cdf = np . ma . filled ( cdf_m , 0 ). astype ( ‘uint8’ ) dst = cdf [ src ] # src의 값이 cdf배열의 인덱스로 사용됨 # cdf는 히스토그램 평활화된 값이 저장되어 있으므로 # src[12][10]칸의 픽셀값이 125이면 cdf[125]의 값을 추출 # 이 값은 픽셀값 125가 평활화된 값이다 hist = cv2 . calcHist ([ dst ],[ 0 ], None ,[ 256 ],[ 0 , 256 ]) # 결과

하지만 히스토그램 스트레칭과는 다르게 평활화는 별도 함수가 존재하므로 매번 위 코드를 작성하지 않아도 된다! 히스토그램 평활화 함수는 cv2.equalizeHist()

OpenCV Python 영상 명암비 조절(정규화)

명암비 : 밝은 곳, 어두운 곳 사이의 밝기 정도 차이

1) 명암비 조절 : dst(x, y) = saturate(s*src(x, y))

기울기가 작아 확 어두워지거나 기울기가 커서 값들이 대부분의 픽셀 값이 255가 되어 너무 밝아지겠네요.

2) 효과적인 명암비 조절 : dst(x, y) = saturate(src(x, y) + (src(x, y)-128)*a)

위 식의 경우 모든 픽셀 값이 128을 지나게 됩니다.

※ 이 방법도 너무 밝은(대부분의 픽셀 값이 255쪽), 너무 어두운(대부분의 픽셀 값이 0쪽) 일 경우엔 원하는 결과가 안 나올 수도 있습니다.

import cv2 import numpy as np src = cv2.imread(‘imgs/dog.jpg’, cv2.IMREAD_GRAYSCALE) alpha1 = -0.5 # 명암 조정값 alpha2 = 1.0 # 명암 조정값 dst1 = np.clip((1+alpha1) * src – 128 * alpha1, 0, 255).astype(np.uint8) dst2 = np.clip((1+alpha2) * src – 128 * alpha2, 0, 255).astype(np.uint8) cv2.imshow(‘src’, src) cv2.imshow(‘dst1’, dst1) cv2.imshow(‘dst2’, dst2) cv2.waitKey(0) cv2.destroyAllWindows()

영상의 자동 명암비 조절

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

정규화 함수 사용 : cv2.nomalize(src, dst, alpha, beta [, norm_type [, dtype [, mask]]])

정규화 함수를 사용하면 집중되어있던 히스토그램이 균일하게 분포 된다고 생각하시면 될 것 같습니다.

히스토그램 그래프를 확인해보면 분포는 각 값의 중간을 비워서 간격을 벌리는 것으로 보이네요.

import cv2 import numpy as np import matplotlib.pyplot as plt src = cv2.imread(‘imgs/Lenna.png’, cv2.IMREAD_GRAYSCALE) hist = cv2.calcHist([src], [0], None, [ 256], [0, 256]) plt.subplot(1, 2, 1) plt.title(‘hist’) plt.plot(hist) dst = cv2.normalize(src, None, 0, 255, cv2.NORM_MINMAX) hist2 = cv2.calcHist([dst], [0], None, [ 256], [0, 256]) plt.subplot(1, 2, 2) plt.title(‘hist2’) plt.plot(hist2) cv2.imshow(‘src’, src) cv2.imshow(‘dst’, dst) cv2.waitKey(1) plt.show() cv2.destroyAllWindows()

src : 입력 영상

dst : 출력 영상

alpha : 최솟값

beta : 최댓값

norm_type : 정규화 타입, NORM_IMF, NORM_L1, NORM_MINMAX 등(설명은 봐도 잘 모르겠네요)

dtype : 결과 영상 타입

mask : 마스크 영상

원본 사진(src)과 정규화 결과(dst) 비교해보면 히스토그램이 눈대중으로 40~ 220 정도 히스토그램 분포되었던 게 0 ~ 255까지 분포된 것을 확인하실 수 있습니다. normalize의 결과는 어느 정도 중간에 몰려있는 영상에서 잘 이루어지네요

영상의 명암비(Contrast) 조절

728×90

반응형

명암비(Contrast)란?

밝은 곳과 어두운 곳 사이에 드러나 는 밝기 정도의 차이이다.

컨트라스트, 대비라고 도 한다.

dst(x, y) = saturate(s * src(s, y)) #s 라는 scaling factor 를 사용하여 곱셈을 한다.

s = 0.5 일 때 명암비는 낮아지는 대신 어두워진다. s = 2.0 일 때는 (y = 2x) 픽셀의 값이 255 이상 넘어가는 값이 많아 하얀 이미지로 보이는 문제가 발생한다.

효과적인 명암비 조절 함수

dst(x, y) = saturate(src(s, y) + src(x,y) – 128 * a) #a 파는 기울기의 역할을 한다(문턱치)

contrast1.py

import sys import numpy as np import cv2 src = cv2.imread(‘lenna.bmp’, cv2.IMREAD_GRAYSCALE) if src is None: print(‘Image load failed!’) sys.exit() alpha = 1.0 dst = np.clip((1+alpha)*src – 128*alpha, 0, 255).astype(np.uint8) cv2.imshow(‘src’, src) cv2.imshow(‘dst’, dst) cv2.waitKey() cv2.destroyAllWindows()

728×90

반응형

So you have finished reading the opencv 명암 대비 topic article, if you find this article useful, please share it. Thank you very much. See more: OpenCV 대비 조절, OpenCV 이미지 평균 밝기, OpenCV C++ 밝기 조절, OpenCV 오버플로우, 명암대비 차이, 명암 대비 스트레칭, Python OpenCV Contrast 조절, OpenCV 이미지 밝기 측정

Leave a Comment