2024. 10. 03
이 내용은 제가 대학교에서 공부한 수업을 기반으로 컴퓨터 비전 과목 수강 후 그 내용 기반으로 작성하는 방식입니다.
01_Computer Vision and Digital Images
컴퓨터 비전(computer vision): 컴퓨터를 이용하여 정지영상 또는 동영상으로 부터 의미있는 정보를 추출하는 방법을 연구하는 학문.
사람의 눈이 하는 직업은 카메라, 사람의 뇌가 하는 작업은 수학적 알고리즘을 통해 컴퓨터가 유사하게 수행.
내가 배운 AI(Artificial intelligence)는 사람 대신 판단해주는 걸 말하고,
ML(Machine Learning)은 학습을 통해 규칙을 찾는 것,
DL(Deep Learning)은 layer를 통해서 규칙을 찾는걸 말한다!
물론 컴퓨터 비전은 이를 다 포함한다.
비전에서는 주로 밝기, 색상, 모양, 텍스처 등을 활용
비전을 위해서 준비한 수학적 지식은 선형대수, 미적분학, 확률과 통계가 주로 필요하며 이는 최신 딥러닝 기술에 들어가는 내용이다.
(다시 선대를 복습하는 이유 중 하나) 따라서 이런 이해가 있으면 컴퓨터 비전에 대한 이해가 가능.
앞으로 올리게 될 프로그래밍은 C++ 기반의 OpenCV가 공부하는 책에 나와있지만
Python 기반으로 코딩을 리뷰할 예정입니다.
SDR ( Standard dynamic Range ) : 이미지 또는 비디오의 색상과 밝기 표현이 제한된 범위 내에서 표현되는 기술
HDR ( High dynamic Range) : 이미지 또는 비디오에서 보다 넓은 색상과 밝기의 범위를 표현할 수 있게 하는 기술
간단하게 제가 이해한 SDR과 HDR에 대해서 간단하게 설명하면
SDR의 경우 사진을 한번 찍었을때 한곳의 초점이 맞춰져서 그부분에 대해선 좋은? 화질로 이미지를 표현할 수 있지만
HDR 의 경우 SDR의 장점을 살려서 잘나오는 여러 사진의 부분들을 합성해서 모든 사진의 부분이 다 좋은 화질의 이미지로 표현되는 느낌
으로 이해를 했습니다.
좌측과 우측을 비교해보면 왜 HDR의 화질이 더 좋은것 같은지 알 수 있을 것 같습니다.
이제 본격 적인 비전에 대한 개념에 대해 이해해 보겠습니다. (내기준)
피사체: 카메라로 사진을 찍을 때, 그 대상이 되는 풍경이나 사물
영상의 획득: 태양의 가시광선 또는 특정 광원에서 발생한 빛이 피사체에 부딪혀 반사되고,
그 반사된 빛이 카메라 렌즈(lens)를 통해 카메라 내부로 들어오게 됨.
렌즈의 경우 카메라 바깥으로부터 들어온 빛을 굴절시켜 이미지 센서로 모아 주는 역할을 함.
이미지 센서: 빛을 전기적 신호로 변환하는 포토 다이오드가 2차원 평면상에 배열되어 있는 장치.
이때 포토 다이오드란 빛의 강도를 전기신호로 변환하는 반도체 장치이고,
렌즈에 모인 빛이 이미지 센서에 닿으면 이미지 센서에 포함된 포토 다이오드가 빛을 전기적 신호로 변환한다.
참고) 빛을 많이 받는다면 큰 신호를 생성하고, 빛을 적게 받은 포토 다이오드는 작은 크기의 신호를 생성한다.
(뭔가 당연할것 같은 말)
이후 명암이 있는 2차원 영상을 구성하는데 앞서 말한 포토다이오드에서 생성된 전기적 신호는
아날로그-디지털 변환기(ADC, Ananlog-to-Digital Convertor)를 거쳐 디지털 신호로 변환되고,
다시 카메라 ISP(Image Signal Processor) 장치로 전달됨 (고품질 이미지로 변환된다.)
이때 ISP장치는 화이트 밸런스 조정, 색보정, 잡음 제거 등의 기본적인 처리를 수행한 후 2차원 디지털 영상을 생성
크게 그림으로 본다면
쉽게 제가 요약을 해보자면 피사체에 부딪히는 태양의 가시광선이나 빛이 반사가 되어 렌즈를 통해 카메라로
들어오고 이때의 광선과 빛을 이미지 센서 내부에 있는 포토 다이오드가 전기적 신호로 변환을 해줌.
그 이후 아날로그-디지털 변환기를 통해 전기적 신호는 디지털 신호로 변하게되어 이미지 신호 처리인
ISP로 들어가서 기본적인 이미지 처리를 진행해주고, 이후 2차원 디지털 영상으로 생성이 된다음 jpg같은
파일의 형태로 저장 된다.
비전안에서의 개념을 간단히 좀 적어보면,
픽셀(pixel): 영상을 구성하는 최소 단위
픽셀이 바둑판처럼 균일한 격자 형태로 배열되어 있고, 컴퓨터의 경우 좌표 시작을 0으로 함.
만약 이를 좌표로 표현한다면 우리가 (행, 열)로 표현을 할때 행은 y축이고 열은 x축이므로
흔히 생각하는 x,y좌표계가 아닌 y,x좌표계의 형태로 생각을 해야 행열에 대한 명확한 표현이 가능한 듯 하다.
또한 행렬의 경우 수학적인 표현이기에 행과 열번호는 0부터 시작하지 않고 1부터 시작하는 형태..( 헷갈릴 것 같다.)
(이후 포스팅 하면서 좀 더 디테일하게 생각해 보겠습니다)
컴퓨터 비전 분야의 경우 주로 gray scale 영상과 true color image를 사용한다.
그레이스케일의 경우 오직 밝기 정보만으로 구성된 영상을 의미하고,
색이 있는 사진처럼 다양한 색상을 표현하는 경우를 트루컬러 영상이라고 함.
제가 배운 컴퓨터 비전의 경우 주로 grayscale의 이미지나 영상을 다루게 되는데
그레이스케일 영상에서 가질 수 있는 값의 범위인 그레이스케일 레벨은 0 부터 255사이의 정수 범위를 의미한다.
또한 0에 가까울 수록 어두운 검정색이며 255에 가까울수록 밝은 흰색이다 이에 중간값인 128의 경우 회색에 가까운 색을 띈다.
트루컬러 영상의 경우 빛의 3원색인 R, G, B 세개의 색상 성분 조합으로 픽셀 값을 표현하고 (Red, Green, Blue)
각각의 색상 성분은 0부터 255 사이의 정수 값으로 표현한다.
만약 R의 값이 255이고 나머지 G, B 값이 0이라면 빨간색 , RGB 모두 다 0이라면 검정색인 느낌으로 파악하면 이해하기 쉽다.
또한 R혼자 독자적으로? 0, 255 로 쓰인다기 보다는 3가지의 색이 (0, 0, 0) 이런식이라던지 (255, 0 , 0) 이런식 이어야
red색 혹은 green색 혹은 blue색의 의미를 각각 해석할 수 있는 것으로 보인다.
(아니라면 수정 및 정정 요청 부탁드리겠습니다!)
가보자 가보자!
'컴퓨터 비전' 카테고리의 다른 글
파이썬으로 배우는 openCV (2) (도형, 텍스트 그리기) (3) | 2024.10.13 |
---|---|
파이썬으로 배우는 openCV (1) (2) | 2024.10.12 |
파이썬을 이용한 openCV and Matrix (0) | 2024.10.12 |