영상(image)이란?
• 픽셀(pixel)이 바둑판 모양의 격자에 나열되어 있는 형태 (2차원 행렬)
• 픽셀: 영상의 기본 단위, picture element, 화소(畵素)

그레이스케일(grayscale) 영상( 1byte )
• 흑백 사진처럼 색상 정보가 없이 오직 밝기 정보만으로 구성된 영상
• 밝기 정보를 256 단계로 표현
• Pixel 프로그래밍 값(표현방법) = np.uint8
- 총 256개의 구간으로 밝기를 나누고 해당 밝기에 매칭 되는 구간의 정보를 데이터로 저장하는것을 "양자화" 라고 부른다.

Y = 0.299R + 0.587G + 0.114B
RGB 영상을 GrayScale로 변환??
장점: 저장용량 ↓, 처리속도↑
단점: 색상정보 상실 so, Color 정보가 중요할 때는 진행 X
트루컬러(truecolor) 영상( 3byte )
• 컬러 사진처럼 색상 정보를 가지고 있어서 다양한 색상을 표현할 수 있는 영상
• Red, Green, Blue 색 성분을 256 단계로 표현
- 컬러 이미지에서는 R G B 의 밝기 값 3개를 "양자화" 하여 저장
=> 256(3제곱) = 16,777,216 색상 표현 가능
• Pixel 프로그래밍 값(표현방법) = tuple, np.ndarray

• R, G, B 색 성분의 크기를 각각 0 ~ 255 범위의 정수로 표현
• 0 : 해당 색 성분이 전혀 없는 상태
• 255 : 해당 색 성분이 가득 있는 상태
영상의 표현 방법

영상: 가로*세로 / OpenCV: 세로*가로
- 작업을 진행할 때 이 부분을 정확히 명시해줄 필요가 있음
- 기본적인 2차원 x,y가 아니라 y가 밑으로 감

영상 파일 형식 특징
1. BMP: 압축 x, 그대로 저장(파일 용량이 큰 편)
2. JPG: 압축==>손실압축 so, Pixel 값이 조금씩 바뀜(=결과값이 달라질 수 있음) - 잘안씀
3. GIF: 움직이는 GIF지원(git hub readme), 화질이 떨어짐 - 잘 안씀
4. PNG: Portable Network Graphics( 무손실 압축+ 알파채널(투명도) 지원 )
https://cord-ai.tistory.com/168
이미지 및 영상 압축 방식
" 사진(이미지) = (가로 * 세로)를 가득 메우고 있는 점 Pixel들이 모여있는 것 " 사진의 한 점 한 점마다 어떤 색에 해당되는지를 색깔에 대응되는 숫자로 기록해두면 사진을 볼 때는 역으로 그 숫
cord-ai.tistory.com
OpenCV 이미지 처리를 위한 구성요소
- 이미지의 크기, 정밀도, 채널
1. 이미지 크기(Image Size)
고화질의 이미지의 경우, 이미지의 크기가 매우크다.
= 그에 따라 영상 처리를 진행할 경우, 이미지의 크기 만큼 데이터가 생성되어 너무 많은 연산을 진행
so, 이미지의 크기를 변경하는 메소드 (Image Pyramid, Resize) 등을 전처리 후 적용
2. 정밀도(Bit Depth)
= 비트 깊이, 색상 깊이, 색 심도
정밀도란 이미지가 얼마나 많은 색상을 표현할 수 있는지를 의미
정밀도가 ↑ 더 많은 색상을 표현할 수 있어서 데이터의 폭이 넓어지고 더 자연스러운 이미지 형성
정밀도가 ↓ 육안으로 확인할 수 없을 정도의 변형
==> 일반적으로 유효 비트가 많을수록 데이터의 처리 결과는 더 정밀해진다.
* 1-bit
1-Bit의 경우, 0과 1의 두 가지의 값만 가지게 되어 모든 색상을 0의 값을 지니는 색상과
1의 값을 지니는 색상으로만 표현
== 두 가지의 색상이 아닌 두 가지의 값으로 표현할 수 있다는 의미
* 8-bit
2x2x2x2x2x2x2x2=256을 의미(256 가지의 방법으로 값을 표현)
최소 8-Bit를 가질 때 유의미한 데이터를 얻게되어 색상을 표현 = 흑백의 색상을 원할하게 표현
OpenCV에서는 U8의 값을 가장 많이 사용(unsigned 8-bit intergers)
signed의 경우에는 -127~127의 값을 표현할 수 있으며, unsigned의 경우, 0~255의 값을 표현
3. 채널(Channel)
- 그래픽스 이미지의 색상 정보를 포함
채널(Channel)은 일반적으로 Red, Blue, Green과 추가적으로 Alpha가 존재
(이외에도 HSV, YCrCB, ... 존재)
RGB라고 표현하지만 OpenCV는 BGR로 표현
색상: 3 ~ 4 채널의 값을 사용( 다 채널 또는 다중 채널 )
흑백: 1 채널의 값을 사용( 단일 채널 )
이미지에서 이미지를 채널별로 분리했을 때 = cv.split(BGR)
R의 성분, G의 성분, B의 성분만 따로 뽑아내서 출력하면 흑백으로 출력됨
*why?*
한 가지의 채널로만 색상을 표현해야하기 때문
== 즉, 해당 성분에 가까울수록 하얀색으로 출력되고 아닌 값은 검은색으로 출력
'OpenCV > OpenCV-Chapter' 카테고리의 다른 글
CH03 Opencv-Python Histogram, Contrast (0) | 2021.12.18 |
---|---|
CH03 Opencv-Python 영상 처리 기법(화소, 연산) (0) | 2021.12.18 |
CH02 OpenCV-Python 기초(도형그리기) (0) | 2021.12.18 |
CH02 OpenCV-Python 기초(imread, mask,ROI) (0) | 2021.12.18 |
CH01 OpenCV-Python(Computer Vision) (0) | 2021.12.18 |
댓글