
화소(pixel): 색상을 가진 화면을 구성하는 최소 단위의 점이며, RGB 강도를 조절하여 색상 표현
RGB: Red, Green, Blue
컬러 스페이스(color space, 색 공간): 색을 표현하는 방식. 채널로 구성되어 있다.
래스터(raster), 비트맵(bitmap): 각 점의 색상 값을 저장하는 방식.
각 색상별 8비트를 사용하여 0~255 값으로 색의 감도 표시
벡터(vector): 점과 선의 위치를 방적식으로 기록 → 확대, 축소에 따라 각 화소에 어떻게 표현될 지 재계산 → 깨지지 않음
YUV 방식: 흑백 채널에 1/4의 해상도를 가진 두 색상 채널을 덧붙임
HSV(Hue 색상, Saturation 채도, Value 명도)
CMYK(Cyan, Magenta, Yellow, Black): 각 색을 조합하여 검은색을 표현하는 것이 낭비가 심하다. 그럴 때 RGB 대신 사용하면 좋다.
JPEG: 근처 화소들끼리 묶어 이미지 압축 → 색상 정보 손실 → 재압축이 일어나면 디지털 풍화 발생
PNG: 색상 손실 없이 이미지 압축 (사용된 색상을 정의해두었다가 추후에 참조) → 사용 색상에 따라 용량 결정
GIF: 이미지 내 여러 프레임을 둔다 → 손실 X, 하지만 256개의 색상만 기억
Numpy와 결합하여 간편하게 이미지 작업을 할 수 있다.
PIL: Python Image Library
이미지는 배열형태 데이터.# numpy, pillow import
import numpy as np
from PIL import Image
# 32x32 검은 이미지
data = np.zeros([32, 32, 3], dtype=np.uint8)
image = Image.fromarray(data, 'RGB')
# 빨간 이미지
data[:, :] = [255, 0, 0]
image = Image.fromarray(data, 'RGB')
PIL.Image.fromarray(): 이미지로 변환
np.zeros() : 배열 초기화 (배열을 0으로 채움)
from PIL import Image
import os
# 연습용 파일 경로
image_path = os.getenv('HOME')+'파일경로'
# 이미지 열기
img = Image.open(image_path)
# width와 height 출력
print(img.width)
print(img.height)
# JPG 파일 형식으로 저장해보기
new_image_path = os.getenv('HOME')+'파일 경로
img = img.convert('RGB')
img.save(new_image_path)
# 이미지 크기 변경하기
resized_image = img.resize((100,200))
# 저장하기
resized_image_path = os.getenv('HOME')+'이미지 파일 경로
resized_image.save(resized_image_path)
# 이미지의 부분만 크롭하기
# 크롭할 부분의 좌표
box = (300, 100, 600, 400)
region = img.crop(box)
오픈소스로 제공되는 컴퓨터 비전용 라이브러리.
영상 처리에 대한 다양한 기능 구현
OpenCV에서는 RGB가 아닌 BGR 순서 사용
imread: 파일로부터 이미지를 읽어와 반환해 주는 함수
cvtColor: 컬러 스페이스 변환(convert) 함수
cv.inRange(): img 를 변환한 hsv에다가 이 기준들를 적용하여, 해당하는 픽셀들에는 1, 그렇지 않은 픽셀들에는 0을 찍어놓은 배열을 반환
히스토그램: 이미지에서 픽셀 별 색상 값의 분포
# opencv python, matplotlib 설치
$ pip install opencv-python matplotlib
OpenCV의 compareHist() 함수를 사용하여 입력 이미지와 검색 대상 이미지의 히스토그램 간 유사도를 계산프로그램 실행
build_histogram_db()
입력된 이미지 이름에 해당하는 히스토그램을 입력 이미지로 선택하여 target_histogram로 변수명 지정
search()
target_histogram와 histogram_db를 입력으로 받기OpenCV의 compareHist() 함수를 사용하여 입력 이미지와 검색 대상 이미지의 히스토그램 간 유사도를 계산고른 이미지 표시
프로그램 종료