[openCV] openCV 기본

<<CV의 3대 특징: 분류, 객체 감지, 이미지 세그멘테이션>>

 

<<Python OpenCV 패키지 설치 방법>>

  • pip install setuptools: Python 버전 12에 필요한 setuptools 설치
  • pip install opencv-python: OpenCV의 기본 라이브러리와 numpy(배열 변환에 필요) 설치
  • pip install opencv-contrib-python: 추가적인 확장 모듈과 라이브러리 설치

<<영상에 대한 이해>>

  • 컴퓨터 비전(Computer Vision): 컴퓨터를 이용하여 인간의 시각 기능을 모방해 시스템을 만드는 기술
  • 이미지 처리(Image Processing): 컴퓨터 비전 시스템에서 영상을 인식하기 용이하게 처리하는 과정
  • 디지털 이미지(Digital Image): 특정 시간에 공간적으로 연속적인 장면을 샘플링하여 생성된 점들의 배열로 이는 양자화 과정을 거친다.
  • 픽셀(Pixel): Picture Element의 약자로, 디지털 영상을 구성하는 기본적인 요소

<<영상의 종류>>

A. 컬러 영상 (Color Image, RGB Image)

- 1픽셀은 R, G, B의 3개 채널로 구성되며, 각 채널은 8비트 할당

- 1픽셀은 0에서 2^24-1까지 총 16,777,216개의 색상 또는 밝기 값을 표현

- Full HD : 1920x1080x3x8 = 49,766,400 bits = 6,220,800 bytes

- Full HD 해상도에서 데이터 크기는 약 6MB

B. 회색조 영상 (Grayscale Image)

- 1픽셀은 밝기 값을 나타내는 1개 채널로 구성, 8비트 할당

- 1픽셀은 0에서 2^8-1까지 총 256개의 밝기 값을 표현

- FullHD : 1920x1080x8 = 16,588,800 bits = 2,073,600 bytes

- Full HD 해상도에서 데이터 크기는 약 2MB

C. 이진 영상 (Binary Image)

- 1픽셀은 밝기 값을 나타내는 1개 채널로 구성, 2비트 할당

- 1픽셀은 0 또는 1의 밝기 값을 가짐

- Full HD : 1920x1080 = 2,073,600 bits = 259,200 bytes

- Full HD 해상도에서 데이터 크기는 약 259KB

D. 인덱스 영상 (Indexed Image)

- 1픽셀은 RGB 3채널이 아닌 1채널로 구성, 8비트 할당

- 컬러 영상을 적은 수의 비트로 표현할 때 사용

- 컬러 영상에 비해 화질은 저하되지만 파일 크기는 작음

- 인덱스 값으로, RGB 밝기값을 갖고 있는 색상표(Palette)에서 위치에 대한 인덱스로 활용

- Full HD: 1920x1080x8+3x8x256 = 16,594,944 bits = 2,074,368 bytes

- Full HD 해상도에서 데이터 크기는 약 2MB


 

OpenCV에서 지원하는 다양한 기계학습 및 딥러닝 관련 기능과 통합 방법

 

1. cv.readNet(모델, 환경설정)을 통한 딥러닝 모델 호출:

 OpenCV에서 딥러닝 모델을 불러오고 사용하기 위한 함수, 사용자는 사전 훈련된 딥러닝 모델과 해당 모델을 구동하기 위한 환경설정 파일을 cv.readNet 함수에 전달함으로써 모델을 호출하고 사용할 수 있다. 이 기능은 OpenCV에서 제공하는 DNN(Deep Neural Network) 모듈의 일부로, 다양한 딥러닝 프레임워크에서 훈련된 모델을 사용할 수 있게 한다.

 

2. OpenCV와 텐서플로를 결합한 학습 모듈: 이는 OpenCV의 이미지 처리 기능과 텐서플로(TensorFlow)의 딥러닝 모델을 결합하여 사용하는 방법을 설명한다. 이러한 통합은 OpenCV에서 이미지를 전처리하고, 텐서플로를 사용해 이미지에 대한 딥러닝 모델을 훈련 및 평가하는 데 사용된다. 이 방법을 통해 사용자는 OpenCV의 강력한 이미지 처리 기능과 텐서플로의 광범위한 딥러닝 기능을 함께 활용할 수 있다.

 

3. OpenCV와 사이킷런(파이썬 머신러닝 알고리즘) + API(파인튜닝)의 조합: 이는 OpenCV와 사이킷런(scikit-learn)을 함께 사용하여 머신러닝 모델을 구현하고 파인튜닝하는 방법을 설명한다. 사이킷런은 파이썬에서 널리 사용되는 머신러닝 라이브러리로 다양한 분류, 회귀, 클러스터링 알고리즘을 제공합니다. 사용자는 OpenCV의 이미지 처리 기능을 사용해 데이터를 전처리하고 사이킷런을 사용해 해당 데이터에 대한 머신러닝 모델을 훈련할 수 있다. 또한 API를 통해 모델의 성능을 최적화하기 위한 파인튜닝 과정을 진행할 수 있다.


그레이 스케일 변환

모든 픽셀의 색상 채널(R, G, B)의 밝기에 가중치를 적용하여 단일 밝기 값으로 결합

각 색상 채널(블루, 그린, 레드)의 밝기에 가중치를 적용하여 단일 밝기 값으로 결합 하는 원리로 가중치는 일반적으로 휘도(luminance : 빛의 밝기)를 고려하여 설정된다.

<계산식> Gray = 0.299 * Red + 0.587 * Green + 0.114 * Blue Gray = 0.299 * 255 + 0.587 * 0 + 0.114 * 0 ≈ 76.2

휘도, 그레이 스케일 변환, Y 계수는 <모두 색상 정보를 밝기 정보로 변환>하는 과정을 말한다.

1)휘도(Luminance):빛의 밝기, 광도 측청치 (빛의 강도와 방향성)

2)Y 계수(Y coefficient):텔레비전과 비디오 시스템에서 사용되는 YUV 색 공간에서 Y 채널을 의미하며 휘도 정보를 나타내고, U와 V는 색차 정보를 나타냄, Y 계수는 RGB 값을 휘도 값으로 변환하는 데 사용되는 공식에서 파생된다.