돌아온 걸 환영합니다
이제 numpy 배열을 이용하는 기본적인 방법을 알았으니
이미지가 정말로 무엇인지에 대해 빠르게 얘기해 봅시다
numpy를 특히 이미지 파일과 함께 사용하는 방법을 알아보기 전에
컴퓨터가 스스로 어떻게 이미지를 다루는지에 관해 이야기를 나눠봅시다
봉투에 쓰인 주소의 우편번호에 기반하여
우편을 분류할 수 있는 소프트웨어를 제작한다고 상상해 봅시다
보통 우편은 손글씨가 많은데, 이 수기로 쓰인 번호들의 이미지 데이터를 실제로 읽어내기 위해
컴퓨터 비전의 사용법을 이해하기 시작할 필요가 있다는 것을 뜻하죠
그래서 우리는 PNG 나 JPEG 같은 봉투 사진
이미지로 작업할 겁니다
또한 우리는 컴퓨터가 실제로 어떻게 이미지 데이터를 나타내는지에 대해 알아볼 겁니다
손으로 쓴 번호의 단순한 이미지를 가지고 있다고 가정해 봅시다
예를 들어 1, 2, 3 이 세 숫자의 이미지를 가지고 있습니다
이 이미지들은 JPEG 또는 PNG 파일입니다
각각의 숫자 이미지는 하나의 배열로 나타낼 수 있습니다
여기 0에서 9까지의 숫자가 있습니다
그리고 이 모든 숫자는 하나의 배열로 나타나죠
예를 들어, 여기 28*28 픽셀로 표현된 수가 있습니다
더욱더 많은 픽셀이 있을수록 더 좋은 해상도가 나올 거라 생각할 수 있습니다
아마 좌측의 이미지가 회색조, 즉 검은색, 하얀색 또는 회색으로만 이루어져 있다는 걸 알아차리셨을 겁니다
그리고 이것은 0에서 1까지의 값으로 매겨진 값의 배열로 나타나 있습니다
픽셀이 얼마나 어두워야 하는지는 0에서 1사이의 값으로 표현될 수 있죠
여기 수기로 쓰인 숫자 1이 있고 더 어두운 부분은
숫자 1이라는 한 자릿수로 표현되고 0으로 표현되면 완전히 하얗다는 것을 알았을 겁니다
가끔 기본 이미지는 실제로 그것을 읽었을 때 보통 0과 255 사이의 값을 가집니다
이때 225는 가장 높거나 밝음을 나타내는 값이고 0은 가장 어두운 값을 나타냅니다
0에서 255까지의 범위는 컴퓨터가 어떻게 8 비트의 숫자를 저장하는지에 따라 달라집니다
그건 이 강의의 범주 밖이기도 하니 우리가 이를 이해할 필요는 없습니다
하지만 끝에, 더 많은 정보를 확인할 수 있는 링크를 소개해 드리겠습니다
만약 여러분이 0과 1 사이의 값을 위해 0과 255 사이의 값을 얻기를 바란 적이 있다면
여러분은 최댓값인 255로 나누어 0과 1사이의 값으로
정상화시키기만 하면 됩니다
그리고 이 강의 뒷부분에서, 그 방법의 몇 가지 예시를 배워보겠습니다
이제 회색조 이미지를 배열로 나타내는 방법을 이해했습니다 하지만 컬러 이미지는 어떨까요?
컬러 이미지는 빨강, 초록, 파랑의 혼합물로 표현됩니다
가산 혼합 방식은 RGB, 또는 빨강, 초록, 파랑의 서로 다른 양을 혼합시키면서
우리가 다양한 색을 표현할 수 있게 해줍니다
RGB는 우리가 다양한 색을 만들 수 있게 하죠 여기서 우리는 빨강, 초록, 파랑색으로 만들 수 있는
색깔의 동적 범위 전체를 볼 수 있어요 이러한 종류의 이미지는 색삼각형으로 알려져 있습니다
기본적으로 이는 삼원색인 빨강, 초록, 파랑을 섞음으로써 이 삼각형 안의 색깔로만 재현될 수 있음을 의미합니다
삼각형 밖의 색은 회색으로 보이게 됩니다
삼원색, 그리고 중앙 흰 부분에 위치한 D65가 있고요
그리고 기본적으로 만들 수 있는 색깔의 가장자리를 보여줍니다
인간에게는 볼 수 있는 색의 한계가 있음을 명심하세요
하지만 확실히 빨강, 초록, 파랑은 꽤 넓은 범위를 포함합니다
이 강의 뒷쪽에서, 우리는 빨강, 초록, 파란색을 넘어서는 이미지에 적용될 수 있는
대안적인 색 지도에 대해 배워볼 겁니다
하지만 현재 빨강, 초록, 파랑은 우리에게 충분하다 못해 과합니다
각각의 색조는 밝기 값을 가지고 있으며 여러분은 이미 이러한 종류의 표현을
다른 소프트웨어의 RGB 슬라이더에서 보신 적이 있을 겁니다
사실, 여러분은 이러한 값을 찾기 위해 구글에 RGB 슬라이더를 검색하실 수도 있습니다
빨강, 초록, 파랑의 값을 0부터 255까지 조절해서
다른 색을 만들어낼 수 있어요
Python과 컴퓨터를 이용하여 컬러 이미지를 읽는다는 것은 일반적으로 무엇을 의미하는 걸까요?
이미지를 읽을 때 3개의 차원을 가지게 됩니다
높이 차원, 너비 차원, 그리고 컬러 채널 세 가지, 빨강, 초록, 파랑이 이에 해당됩니다
이 말은 여러분이 이미지를 넘파이 배열로 읽을 때 모양을 확인하면
(1280, 720, 3)로 나올 겁니다
픽셀 너비, 픽셀 높이, 그리고 컬러 채널을 의미하죠
이것을 실제로 시각화하려면, 기본적으로 3 차원의 배열로 해야겠죠
일반적으로는 2 차원인데 이젠 3 차원이에요 원색 하나마다 하나씩이죠
컴퓨터는 색조가 빨강인 것을 모른다는 걸 명심하세요
컴퓨터는 세 개의 색도 채널이 있다는 것밖에 몰라요 기본적으로 색을 나타내는 세 종류의 회색조 채널 말이죠
그러니 컴퓨터가 진짜로 이것을 해석할 때 여기 흑백의 마지막 열처럼
보이는 무언가를 얻는다는 것을 알아두세요
좌측의 앵무새 이미지를 얻기 위한 색을 조합하기 위해
여러분이 사용하는 소프트웨어의 활용에 달려있습니다
우리는 여전히 0과 255 사이의 값을 얻고 있다는 점을 명심하세요
단지 빨강, 초록, 파랑의 세 개의 도표밖에 없다는 거죠
그러므로 이용자들은 무슨 채널이 어떤 색에 해당하는지를 알아야 합니다
각각의 채널은 기본적으로 하나의 회색조 이미지와 같습니다
이제 더 깊이 탐구해 봅시다
numpy와 python을 이용해서 말이죠
저는 또한 여러분이 위키백과에서 RGB 컬러 채널링 관련 글을 읽어보기를 추천드려요
제목은 RGB Color Model이고 RGB 색 모델의 역사뿐만 아니라
'딥러닝' 카테고리의 다른 글
6강 NumPy 및 image basics - Numpy 및 이미지 평가 테스트 (0) | 2023.06.19 |
---|---|
5강 NumPy 및 image basics - 이미지와 NumPy (1) | 2023.06.18 |
3강 NumPy 및 image basics - NumPy 배열 (0) | 2023.06.17 |
2강 - 아나콘다 설치 및 주피터 사용법 (0) | 2023.06.15 |
1강 OpenCV 및 딥러닝 을 이용한 Computer Vision 파이썬 - 강의 커리큘럼 개요 (0) | 2023.06.15 |