3-4. 히스토그램 분석

히스토그램 (Histogram)

    관심 영역에 어떠한 값이 얼마나 분포되어 있는지 확인 할 수 있는 막대 그래프

     예) 그레이 스케일 영상의 0부터 255 각 픽셀 값이 영상 안에 얼마나 분포되어 있는 지를 막대 그래프의 형태로 표현

     해당되는 픽셀 개수를 그대로 표현 할 수도 있지만 전체 값으로 나누어 확률로 나타낼 수도 있다. (Normalization)

Histogram 표현 이해도 (출처: FastCampus)

    히스토그램 구하기: cv2.calcHist(images, channels, mask, histSize, ranges, hist, accumulate) -> hist

     images는  입력 영상 리스트

     channels는 히스토크램을 구할 채널 리스트

     mask는 마스크 영상으로 입력 영상의 부분적 히스토그램을 구할 때 사용하며 영상 전체를 사용할 경우 None으로 지정

     histSize는 히스토그램 각 차원의 크기(빈(bin)의 개수)를 나타내는 리스트

     ranges는 히스토그램 각 차원의 최소값과 최대값 리스트

     hist는 numpy.ndarray 구조의 계산된 히스토그램, accumulate는 기존의 hist에 누적하고 싶은 경우 True

    강의 자료에서는 그레이스케일과 컬러 영역의 lenna 영상을 히스토그램으로 분석하는 방식을 알려주셨다.  

각 색 영역 lenna 영상을 히스토그램을 분석해본 결과 (출처: FastCampus) 


3-5. 영상의 명암비 조절

명암비(Contrast)

    대비로도 불리며 밝은 곳과 어두운 곳 사이에 드러나는 밝기 정도의 차이

     명암비가 낮을 경우 전체적인 색 톤이 흐릿해지는 느낌이 들며, 명암비가 높아지면 색의 밝기에 따라 극명한 대비를 보여준다.

명암비 대조 영상 예시 (출처: FastCampus)

    명암비 조절하는데 있어 두 가지 방식을 고려할 수 있다.

    1) 명암비 조절 함수: dst(x,y) = saturate(src(x,y) + (src(x,y) - 128) * alpha)

     영상 합성 때는 덧셈 연산을 사용했다면 명암비는 변위차를 주는 offset과 곱셈 연산을 사용해서 기울기를 조절한다.

     입력 영상에 따라 기준점이 되는 128을 조절해서 수식을 적용해야한다.

     numpy의 clip 함수와 타입 변환 함수를 사용하여 구현할 수 있다.

명암비 적용을 위한 변환 함수 적용 예시 (출처: FastCampus)

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

     영상의 히스토그램이 그레이스케일 전 구간에서 걸쳐 나타나도록 변경하는 선형 변환 기법으로 정규화 함수를 사용한다.

     정규화 함수: cv2.normalize(src, dst, alpha, beta, norm_type, dtype, mask) -> dst

       src는 입력 영상, dst는 결과 영상

       alpha는 normalized historgram일 경우 목표 normalization 값

       원소 값 그대로 사용한 히스토그램일 경우 alpha가 최소값 beta가 최대값

       norm_type은 정규화 타입 (NORM_INF, NORM_L1, NORM_L2, NORM_MINMAX)

       dtype은 결과 영상의 타입, mask는 마스크 영상

     변환 함수의 방정식의 경우 스트레칭 되는 최소/최대값 기준 선형 직선의 방적식으로 구하면 된다.

히스토그램 스트레칭 적용 예시 (출처: FastCampus)
변환 함수 구하는 방식 (출처: FastCampus)


인증 타임

출장 와서 쉬는 타임에 수업을 빠르게 들으려다 하다 보니 오늘 배운 모든 개념에 대하여 완전히 이해하지는 못한 기분이 든다. 히스토그램도 옛날에 matlab으로 영상 분석의 방식의 하나로 구현하는 법을 배웠던거 같은데 python-openCV를 이용하여 구현하는 걸 보니 훨씬 편리한 느낌이다. 세상에 똑똑한 사람들은 많고 편리함을 제공해주어서 다행이다. 이번 챕터 실전 코딩이 크로마키 사진 편집인데 오늘 배운 개념들이 어떻게 빌드업이 되는건지 궁금해진다.

3-4. 공부 인증 사진
3-5. 공부 인증 사진


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online

 

패스트캠퍼스(FastCampus) 강의 둘러보러 가기 

   

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.


 

+ Recent posts