용어집
용어집
장마다 나온 용어를 한곳에 모았습니다. 위의 찾기 칸에 낱말을 넣으면 그 줄만 남습니다.
1장 · AI 비전과 OpenCV 개발환경
| 용어 | 설명 |
|---|---|
컴퓨터비전(computer vision) | 컴퓨터가 사진과 동영상을 보고 그 안에 무엇이 있는지 알아내게 하는 기술입니다. vision 은 "보는 힘, 시력"이라는 뜻입니다. |
AI 비전(AI vision) | 컴퓨터비전 가운데 인공지능(AI, Artificial Intelligence) 모델을 써서 사진을 알아보는 쪽을 가리키는 말입니다. 이 과정에서는 컴퓨터비전과 거의 같은 뜻으로 씁니다. |
이미지(image) | 사진이나 그림 한 장입니다. 우리말로는 영상이라고도 합니다. image 는 라틴어 imago(닮은 모습)에서 온 말입니다. |
동영상(video) | 이미지 여러 장을 빠르게 넘겨 움직이는 것처럼 보이게 한 것입니다. video 는 라틴어로 "나는 본다"라는 뜻입니다. |
픽셀(pixel) | 이미지를 이루는 가장 작은 네모 한 칸입니다. picture(그림)와 element(요소)를 줄여 붙인 말입니다. |
해상도(resolution) | 이미지가 가로세로 몇 칸으로 되어 있는지입니다. 320×240 이면 가로 320칸, 세로 240칸입니다. resolution 은 "잘게 나누어 보는 힘"이라는 뜻입니다. |
채널(channel) | 픽셀 한 칸에 들어 있는 숫자 하나하나의 몫입니다. 컬러 이미지는 파랑, 초록, 빨강의 세 채널을 가집니다. channel 은 "물길, 통로"라는 뜻입니다. |
BGR(Blue-Green-Red) | OpenCV 가 색 숫자 세 개를 파랑, 초록, 빨강 순서로 적는 방식입니다. 흔히 쓰는 RGB(Red-Green-Blue)와 순서가 거꾸로입니다. |
영상처리(image processing) | 이미지의 숫자를 계산으로 바꿔 밝게 하거나, 흐리게 하거나, 테두리를 찾는 일입니다. processing 은 "가공, 처리"라는 뜻입니다. |
전처리(preprocessing) | AI 모델에 넣기 전에 데이터를 손질하는 일입니다. pre(미리)와 processing(처리)을 붙인 말입니다. |
딥러닝(deep learning) | 층을 여러 겹 깊게 쌓은 인공 신경망으로 데이터에서 규칙을 배우는 방법입니다. deep 은 "깊은", learning 은 "배움"이라는 뜻입니다. |
분류(classification) | 사진 한 장에 "사과", "귤"처럼 이름 하나를 붙이는 일입니다. class(갈래)로 나눈다는 뜻입니다. |
객체 탐지(object detection) | 사진 속 물건이 어디에 있는지 네모 상자로 표시하는 일입니다. object 는 "물체", detection 은 "찾아냄"이라는 뜻입니다. |
분할(segmentation) | 물건의 테두리를 따라 픽셀 단위로 오려 내는 일입니다. segment 는 "조각"이라는 뜻입니다. |
YOLO(You Only Look Once) | 사진을 한 번만 훑어보고 물건의 위치와 이름을 함께 찾는 객체 탐지 모델입니다. 이름은 "한 번만 본다"라는 뜻입니다. 17장부터 다룹니다. |
라이브러리(library) | 남이 만들어 둔 코드 묶음입니다. 가져다 부르기만 하면 됩니다. library 는 "도서관"이라는 뜻입니다. |
NumPy(Numerical Python) | 숫자 표(배열)를 빠르게 계산하는 파이썬 라이브러리입니다. OpenCV 가 읽은 이미지는 NumPy 배열로 들어옵니다. 이름은 "숫자 계산용 파이썬"이라는 뜻입니다. |
Matplotlib | 그래프와 그림을 화면에 그려 주는 파이썬 라이브러리입니다. MATLAB 이라는 프로그램처럼 그림을 그린다(plot)는 데서 붙은 이름입니다. |
ndarray(N-dimensional array) | NumPy 의 배열 자료형입니다. N 차원(가로, 세로, 채널처럼 여러 방향)으로 숫자를 담습니다. |
uint8(unsigned integer 8-bit) | 0부터 255까지의 정수만 담는 자료형입니다. unsigned 는 "음수 부호가 없는", 8-bit 는 "2진수 8자리"라는 뜻입니다. |
가상환경(virtual environment) | 과목이나 프로젝트마다 따로 쓰는 파이썬 작업 공간입니다. 패키지 버전이 서로 섞이지 않게 합니다. virtual 은 "실제는 아니지만 그런 것처럼 쓰는"이라는 뜻입니다. |
pip | 파이썬 패키지를 내려받아 설치하는 프로그램입니다. "Pip Installs Packages(pip 은 패키지를 설치한다)"를 줄인 이름으로 알려져 있습니다. |
VS Code(Visual Studio Code) | 마이크로소프트가 만든 무료 코드 편집기입니다. 이 과정에서 코드를 쓰고 실행하는 곳입니다. |
2장 · 이미지 입출력과 영상 시각화
| 용어 | 설명 |
|---|---|
파일 형식(file format) | 그림의 숫자를 파일에 어떤 규칙으로 적는지 정한 약속입니다. format 은 "짜임새, 꼴"이라는 뜻입니다. |
확장자(extension) | 파일 이름 끝의 .png, .jpg 같은 꼬리입니다. extension 은 "늘여 붙인 것"이라는 뜻입니다. OpenCV 는 저장할 때 이 꼬리를 보고 형식을 고릅니다. |
압축(compression) | 같은 내용을 더 적은 바이트로 적는 일입니다. compress 는 "눌러 담다"라는 뜻입니다. |
무손실 압축(lossless compression) | 줄였다가 풀면 숫자가 하나도 바뀌지 않는 압축입니다. loss(잃음)가 less(없음)라는 뜻입니다. |
손실 압축(lossy compression) | 눈에 덜 띄는 정보를 버려 파일을 더 작게 만드는 압축입니다. 풀어도 원래 숫자로 돌아가지 않습니다. |
PNG(Portable Network Graphics) | 무손실 압축 그림 형식입니다. 이름은 "어디서나 옮겨 쓰는 네트워크용 그림"이라는 뜻입니다. 투명도도 담을 수 있습니다. |
JPEG(Joint Photographic Experts Group) | 사진에 알맞은 손실 압축 형식입니다. 이 형식을 만든 "사진 전문가 공동 모임"의 이름이 그대로 형식 이름이 됐습니다. 확장자는 .jpg 나 .jpeg 를 씁니다. |
BMP(Bitmap) | 압축하지 않고 숫자를 그대로 늘어놓는 Windows 의 그림 형식입니다. bit(비트)로 만든 map(지도)이라는 뜻입니다. |
품질(quality) | JPG 로 저장할 때 얼마나 덜 버릴지 정하는 0~100 의 숫자입니다. 클수록 원본에 가깝고 파일이 큽니다. |
알파 채널(alpha channel) | 칸마다 "얼마나 비치는지"를 적은 네 번째 숫자입니다. 0 이면 투명, 255 면 불투명입니다. 그림을 겹치는 식에서 이 값을 그리스 문자 알파(α)로 적은 데서 붙은 이름입니다. |
BGRA(Blue-Green-Red-Alpha) | OpenCV 가 투명한 그림의 칸마다 파랑, 초록, 빨강, 알파의 네 숫자를 적는 순서입니다. |
읽기 모드(read flag) | cv2.imread 에 "어떤 모양으로 읽을지"를 알려 주는 값입니다. flag 는 "깃발, 표시"라는 뜻입니다. |
바이트(byte) | 컴퓨터가 저장 크기를 세는 단위입니다. 1바이트는 8비트이고 0~255 의 숫자 하나를 담습니다. 1KB(킬로바이트)는 1,024바이트입니다. |
좌표(coordinate) | 그림 안의 한 자리를 가리키는 숫자 짝입니다. co(함께)와 ordinate(순서를 정한 것)를 붙인 말입니다. |
원점(origin) | 좌표를 세기 시작하는 자리입니다. 그림에서는 왼쪽 위 칸이 (0, 0) 입니다. |
슬라이싱(slicing) | img[10:50, 20:80] 처럼 배열의 한 구간을 썰어 꺼내는 일입니다. slice 는 "얇게 썬 조각"이라는 뜻입니다. |
잘라 내기(crop) | 그림에서 필요한 네모 부분만 남기는 일입니다. crop 은 "작물을 베다, 짧게 깎다"라는 뜻입니다. |
평균 절대 차이(MAE, Mean Absolute Error) | 두 그림의 같은 자리 숫자끼리 뺀 값을 모두 양수로 바꿔 평균 낸 값입니다. 0 이면 두 그림이 똑같습니다. |
인코딩(encoding) | 배열을 PNG, JPG 같은 파일 꼴의 바이트로 바꾸는 일입니다. 반대로 바이트를 배열로 푸는 일은 디코딩(decoding)입니다. code 는 "약속된 부호"라는 뜻입니다. |
figure | Matplotlib 에서 그림 전체를 담는 도화지입니다. figure 는 "모양, 그림"이라는 뜻입니다. |
axes | figure 안에 그림 하나가 들어가는 칸입니다. 가로축과 세로축(axis)을 가진 칸이라 축의 복수형 이름이 붙었습니다. |
서브플롯(subplot) | 도화지 하나를 격자로 나눈 칸 하나하나입니다. sub(아래, 작은)와 plot(그래프)을 붙인 말입니다. |
보간(interpolation) | 그림을 키울 때 원래 칸 사이에 없는 값을 채워 넣는 방법입니다. inter(사이)와 polate(다듬다)를 붙인 말입니다. |
dpi(dots per inch) | 1인치(약 2.54cm)에 점을 몇 개 찍는지입니다. 그림을 저장할 때 dpi 가 클수록 픽셀 수가 많아집니다. |
3장 · 디지털 영상과 색공간 변환
| 용어 | 설명 |
|---|---|
좌표(coordinate) | 그림 안의 한 자리를 가리키는 숫자 짝입니다. OpenCV 함수에는 (x, y), 배열에는 [y, x] 순서로 적습니다. coordinate 는 "함께 정하는 것"이라는 뜻입니다. |
슬라이싱(slicing) | 배열에서 img[10:20, 30:40] 처럼 범위를 주어 한 덩어리를 꺼내는 일입니다. slice 는 "얇게 썬 조각"이라는 뜻입니다. |
복사본(copy) | 숫자 표를 통째로 하나 더 만든 것입니다. 복사본을 고쳐도 원본은 그대로입니다. |
화소 수(pixel count) | 그림의 칸 수, 곧 가로 칸 수 × 세로 칸 수입니다. 100만 칸을 메가픽셀(megapixel, mega 는 "백만")이라고 부릅니다. |
비트 깊이(bit depth) | 픽셀 숫자 하나를 담는 데 쓰는 비트 수입니다. 8비트면 256단계, 16비트면 65,536단계를 적습니다. |
데이터형(data type) | 배열이 담는 숫자의 종류입니다. NumPy 에서는 dtype 으로 확인합니다. dtype 은 data type 을 줄인 말입니다. |
float32(32-bit floating point) | 소수를 담는 데이터형입니다. 숫자 하나에 32비트(4바이트)를 씁니다. floating point 는 "소수점이 떠다니는(자리를 옮기는) 수"라는 뜻입니다. |
정규화(normalization) | 숫자를 정해진 범위로 바꾸는 일입니다. 이 장에서는 0~255 를 255 로 나눠 0.0~1.0 으로 바꿉니다. normal 은 "기준에 맞춘"이라는 뜻입니다. |
클리핑(clipping) | 범위를 벗어난 숫자를 범위 끝 값으로 잘라 맞추는 일입니다. clip 은 "가위로 자르다"라는 뜻입니다. |
빛의 삼원색(primary colors of light) | 빨강, 초록, 파랑의 세 빛입니다. 이 셋을 섞어 거의 모든 색을 만듭니다. |
가산 혼합(additive mixing) | 빛을 겹칠수록 밝아지는 색 섞기입니다. additive 는 "더하는"이라는 뜻입니다. 물감은 섞을수록 어두워지므로 반대입니다. |
색공간(color space) | 색을 숫자 몇 개로, 어떤 뜻으로 적을지 정한 약속입니다. RGB, HSV, Lab 등이 있습니다. |
RGB(Red-Green-Blue) | 색을 빨강, 초록, 파랑 빛의 세기로 적는 색공간입니다. 화면과 Matplotlib 이 쓰는 순서입니다. |
그레이스케일(grayscale) | 회색의 단계만으로 나타낸 흑백 그림입니다. gray(회색)와 scale(눈금)을 붙인 말입니다. OpenCV 에서는 GRAY 라고 적습니다. |
가중 평균(weighted average) | 값마다 무게(중요도)를 달리 곱해 더한 평균입니다. weight 는 "무게"라는 뜻입니다. |
HSV(Hue-Saturation-Value) | 색을 색상, 채도, 명도의 세 숫자로 적는 색공간입니다. |
색상(hue) | 빨강, 노랑, 초록처럼 색의 이름을 정하는 값입니다. 색상환 위의 자리(각도)로 적습니다. |
채도(saturation) | 색이 얼마나 진한지입니다. saturation 은 "흠뻑 젖음, 가득 참"이라는 뜻입니다. |
명도(value) | 색이 얼마나 밝은지입니다. 이 장에서는 HSV 의 V 를 가리킵니다. |
색상환(color wheel) | 빨강, 노랑, 초록, 청록, 파랑, 자홍을 원 둘레에 차례로 놓은 원판입니다. 한 바퀴가 360도입니다. |
마스크(mask) | 고른 칸은 흰색(255), 고르지 않은 칸은 검정(0)으로 적은 흑백 그림입니다. mask 는 "가면, 가림판"이라는 뜻입니다. |
inRange(in range) | 픽셀 값이 정한 범위 안에 들면 255, 아니면 0 으로 적어 마스크를 만드는 OpenCV 함수입니다. 이름은 "범위 안에"라는 뜻입니다. |
비트 연산(bitwise operation) | 두 그림의 같은 자리 숫자를 비트 단위로 AND(그리고), OR(또는) 하는 계산입니다. 마스크를 합치거나 마스크로 오려 낼 때 씁니다. |
Lab(CIE L*a*b*) | 밝기 L 과 색 a, b 로 적는 색공간입니다. CIE 는 국제조명위원회(Commission Internationale de l'Éclairage)의 머리글자입니다. |
YCrCb(밝기와 색차) | 밝기 Y 와 빨강 쪽 색차 Cr(chroma red), 파랑 쪽 색차 Cb(chroma blue)로 적는 색공간입니다. chroma 는 "색"이라는 뜻입니다. |
4장 · 채널 처리와 히스토그램 분석
| 용어 | 설명 |
|---|---|
채널(channel) | 픽셀 한 칸에 담긴 숫자 하나하나의 몫입니다. 컬러 그림은 B, G, R 세 채널을 가집니다. channel 은 "물길, 통로"라는 뜻입니다. |
채널 분리(split) | 컬러 그림 한 장을 채널마다 흑백 그림 한 장씩, 세 장으로 나누는 일입니다. split 은 "쪼개다"라는 뜻입니다. |
채널 병합(merge) | 흑백 그림 여러 장을 채널로 겹쳐 컬러 그림 한 장으로 합치는 일입니다. merge 는 "합치다"라는 뜻입니다. |
인덱싱(indexing) | 배열에서 번호(index, 색인)로 원하는 칸을 꺼내는 일입니다. img[:, :, 0] 은 모든 칸의 0번 채널을 꺼냅니다. |
뷰(view) | 원본 배열의 숫자를 함께 쓰면서 보는 창만 달리한 배열입니다. 뷰를 고치면 원본도 바뀝니다. view 는 "보기, 시야"라는 뜻입니다. |
복사본(copy) | 원본과 따로 숫자를 담은 배열입니다. 복사본을 고쳐도 원본은 그대로입니다. |
색 경향(color cast) | 사진 전체가 한쪽 색으로 쏠린 정도입니다. cast 는 "드리우다"라는 뜻으로, 색이 사진에 드리워졌다는 말입니다. |
cv2.mean | 그림의 채널마다 평균을 구하는 OpenCV 함수입니다. mean 은 "평균"이라는 뜻입니다. |
히스토그램(histogram) | 값을 구간으로 나눠 구간마다 몇 개인지 세어 막대로 그린 그래프입니다. 그리스어 histos(세운 것, 기둥)와 gramma(그림)를 붙인 말로 알려져 있습니다. |
구간(bin) | 히스토그램에서 값을 묶는 칸 하나입니다. bin 은 "통, 상자"라는 뜻으로, 값을 상자에 나눠 담는다는 말입니다. |
도수(frequency) | 구간 하나에 들어간 값의 개수입니다. frequency 는 "자주 일어나는 정도"라는 뜻입니다. |
cv2.calcHist | 그림의 히스토그램을 세는 OpenCV 함수입니다. calculate histogram(히스토그램 계산)을 줄인 이름입니다. |
np.histogram | NumPy 로 히스토그램을 세는 함수입니다. 도수와 구간 경계를 함께 돌려줍니다. |
밝기 분포(brightness distribution) | 사진의 칸들이 어떤 밝기에 얼마나 모여 있는지입니다. distribution 은 "나누어 퍼진 모양"이라는 뜻입니다. |
노출(exposure) | 사진을 찍을 때 빛을 받아들인 양입니다. 많으면 밝게(과다 노출), 적으면 어둡게(노출 부족) 찍힙니다. expose 는 "드러내다, 쬐다"라는 뜻입니다. |
대비(contrast) | 사진에서 밝은 곳과 어두운 곳의 차이입니다. 대비가 낮으면 사진 전체가 뿌옇고 밋밋해 보입니다. contrast 는 "맞대어 견주다"라는 뜻입니다. |
평균(mean) | 모든 값을 더해 개수로 나눈 값입니다. 히스토그램에서는 막대가 모인 자리를 알려 줍니다. |
표준편차(standard deviation) | 값들이 평균에서 평균적으로 얼마나 떨어져 있는지입니다. 히스토그램에서는 막대가 퍼진 너비를 알려 줍니다. deviation 은 "벗어남"이라는 뜻입니다. |
마스크(mask) | 그림과 같은 크기의 흑백 판으로, 흰 칸(255)만 계산에 넣고 검은 칸(0)은 건너뛰게 합니다. mask 는 "가면, 가리개"라는 뜻입니다. |
관심 영역(ROI, Region Of Interest) | 그림에서 따로 살펴보고 싶은 부분입니다. 13장에서 자세히 다룹니다. |
cv2.compareHist | 히스토그램 두 개가 얼마나 닮았는지 숫자로 견주는 OpenCV 함수입니다. compare histogram(히스토그램 견주기)을 줄인 이름입니다. |
상관계수(correlation) | 두 묶음의 숫자가 함께 오르내리는 정도입니다. 1 이면 모양이 같고, 0 근처면 관계가 없습니다. correlation 은 "서로 관계 맺음"이라는 뜻입니다. |
평활화(equalization) | 한쪽에 몰린 히스토그램을 고르게 펴서 대비를 높이는 일입니다. equalize 는 "고르게 하다"라는 뜻입니다. 5장에서 다룹니다. |
5장 · 영상 향상과 학습용 전처리
| 용어 | 설명 |
|---|---|
영상 향상(image enhancement) | 사진을 사람이 보기 좋게, 또는 컴퓨터가 읽기 좋게 고치는 일입니다. enhance 는 "더 좋게 하다"라는 뜻입니다. |
밝기 조정(brightness adjustment) | 모든 칸에 같은 값을 더하거나 빼서 사진 전체를 밝게 또는 어둡게 하는 일입니다. |
대비 조정(contrast adjustment) | 밝은 곳과 어두운 곳의 차이를 넓히거나 좁히는 일입니다. 칸의 값에 같은 수를 곱해서 합니다. |
넘침(overflow) | 담을 수 있는 범위를 넘은 값이 엉뚱한 값으로 바뀌는 일입니다. uint8 에서 256 은 0 으로 돌아갑니다. overflow 는 "넘쳐흐르다"라는 뜻입니다. |
포화 연산(saturation arithmetic) | 계산 결과가 범위를 넘으면 끝 값(0 이나 255)에서 멈추게 하는 계산입니다. 1장에서 cv2.add 로 맛보았습니다. saturate 는 "가득 채우다"라는 뜻입니다. |
cv2.convertScaleAbs | 칸마다 곱하고 더한 뒤 절댓값을 내어 0~255 로 맞추는 함수입니다. convert(바꾸다), scale(크기를 늘이다), abs(absolute, 절댓값)를 붙인 이름입니다. |
alpha 와 beta | 대비 조정 식 g = alpha × f + beta 에서 곱하는 수(alpha)와 더하는 수(beta)입니다. 그리스 글자 α, β 의 이름입니다. |
정규화(normalization) | 값의 범위를 정해 둔 범위로 맞추는 일입니다. 이 장에서는 가장 어두운 값을 0, 가장 밝은 값을 255 로 늘입니다. normal 은 "표준의"라는 뜻입니다. |
NORM_MINMAX | cv2.normalize 에서 가장 작은 값(min, minimum)과 가장 큰 값(max, maximum)을 정한 범위의 양 끝에 맞추라는 방식입니다. |
감마 보정(gamma correction) | 밝기를 0~1 로 바꾼 뒤 거듭제곱해서, 어두운 쪽이나 밝은 쪽을 더 많이 바꾸는 일입니다. 그리스 글자 γ(감마)를 거듭제곱의 지수로 써서 붙은 이름입니다. |
거듭제곱(power) | 같은 수를 여러 번 곱하는 일입니다. 0.5제곱은 제곱근과 같습니다. |
조회표(LUT, Look-Up Table) | 입력 0~255 마다 바꿀 값을 미리 적어 둔 256칸짜리 표입니다. look up 은 "찾아보다"라는 뜻입니다. |
cv2.LUT | 조회표를 보고 그림의 모든 칸을 한 번에 바꾸는 함수입니다. |
누적 도수(cumulative frequency) | 어떤 밝기까지의 칸 수를 모두 더한 값입니다. cumulative 는 "쌓이는"이라는 뜻입니다. |
히스토그램 평활화(histogram equalization) | 누적 도수의 비율로 밝기를 다시 매겨 막대를 0~255 에 고르게 펴는 일입니다. 4장 용어 절에서 미리 보았습니다. |
cv2.equalizeHist | 흑백 그림 하나를 평활화하는 함수입니다. equalize histogram(히스토그램 고르게 하기)을 줄인 이름입니다. |
밝기 채널(luminance channel) | 색공간에서 밝기만 담은 채널입니다. YCrCb 의 Y, HSV 의 V 가 그렇습니다. luminance 는 "빛나는 정도"라는 뜻입니다. |
CLAHE | Contrast Limited Adaptive Histogram Equalization 의 머리글자로, 대비를 제한하며(contrast limited), 자리마다 알맞게(adaptive) 하는 히스토그램 평활화입니다. 사진을 바둑판 칸으로 나눠 칸마다 평활화합니다. |
clipLimit | CLAHE 에서 너무 높은 막대를 깎는 높이입니다. clip 은 "잘라 내다", limit 는 "한도"라는 뜻입니다. |
tileGridSize | CLAHE 에서 사진을 몇 칸의 바둑판으로 나눌지입니다. tile 은 "타일 한 장", grid 는 "격자"라는 뜻입니다. |
역광(backlight) | 찍는 물건 뒤에서 빛이 비치는 상태입니다. 배경은 밝게, 앞의 물건은 어둡게 찍힙니다. |
전처리(preprocessing) | AI 모델에 넣기 전에 사진을 다듬는 일입니다. pre 는 "미리", processing 은 "처리"라는 뜻입니다. |
학습 데이터(training data) | AI 모델이 보고 배우는 사진 묶음입니다. 모델을 실제로 쓸 때 들어오는 사진과 구분합니다. |
6장 · 평균 필터와 Gaussian 필터
| 용어 | 설명 |
|---|---|
노이즈(noise) | 사진에 원래 없던 값이 섞여 들어간 것입니다. 자글자글한 점으로 보입니다. noise 는 "시끄러운 소리, 잡음"이라는 뜻입니다. |
가우시안 노이즈(Gaussian noise) | 칸마다 조금씩 더해지거나 빠진 흔들림으로, 대부분은 작고 아주 가끔 큽니다. 흔들림의 크기가 가우스(Gauss)가 정리한 종 모양 분포를 따른다고 해서 붙은 이름입니다. |
정규분포(normal distribution) | 가운데(평균)에 값이 가장 많고 멀어질수록 드물어지는 종 모양의 퍼짐입니다. normal 은 "흔한, 보통의"라는 뜻입니다. |
씨앗(seed) | 난수를 만드는 출발점 숫자입니다. 같은 씨앗을 주면 언제 실행해도 같은 난수가 나옵니다. |
np.clip | 값을 정한 범위 안으로 잘라 넣는 NumPy 함수입니다. clip 은 "잘라 내다"라는 뜻입니다. |
필터(filter) | 사진의 칸마다 같은 계산을 해서 새 사진을 만드는 도구입니다. filter 는 "거르는 체"라는 뜻입니다. |
이웃(neighborhood) | 칸 하나를 둘러싼 칸들입니다. 3×3 이웃은 자기를 포함한 아홉 칸입니다. |
커널(kernel) | 이웃 칸에 겹쳐 곱할 작은 숫자 표입니다. kernel 은 "알맹이, 낟알"이라는 뜻으로, 필터의 핵심이 되는 작은 표를 가리킵니다. |
커널 크기(kernel size) | 커널의 가로·세로 칸 수입니다. OpenCV 에서는 ksize 라고 줄여 씁니다. |
평균 필터(mean filter) | 이웃 칸을 모두 같은 무게로 평균 내는 필터입니다. 커널 모양이 네모 상자 같아서 상자 필터(box filter)라고도 합니다. |
블러(blur) | 사진을 흐리게 하는 일입니다. blur 는 "흐릿하게 하다"라는 뜻입니다. |
스무딩(smoothing) | 들쭉날쭉한 값을 매끈하게 고르는 일입니다. smooth 는 "매끈한"이라는 뜻입니다. 노이즈 제거 필터를 이렇게도 부릅니다. |
테두리 처리(border type) | 사진 가장자리처럼 바깥에 이웃이 없는 칸을 계산할 때 바깥 칸을 어떻게 채울지 정하는 방법입니다. |
패딩(padding) | 사진 바깥에 칸을 덧대는 일입니다. pad 는 "속을 채워 넣다"라는 뜻입니다. |
가중 평균(weighted average) | 값마다 무게를 달리 주어 내는 평균입니다. weight 는 "무게"라는 뜻입니다. |
Gaussian 필터(Gaussian filter) | 가운데 칸에 무게를 많이, 먼 칸에 적게 주는 종 모양 가중 평균 필터입니다. |
시그마(sigma) | Gaussian 필터의 무게가 얼마나 넓게 퍼지는지 정하는 숫자입니다. 그리스 글자 σ 의 이름이고, 4장에서 본 표준편차를 나타내는 기호입니다. |
이항계수(binomial coefficient) | 파스칼 삼각형에 나오는 1, 2, 1 이나 1, 4, 6, 4, 1 같은 숫자입니다. binomial 은 "두 항의"라는 뜻입니다. |
파스칼 삼각형(Pascal's triangle) | 위의 두 수를 더해 아래 수를 만들며 쌓은 숫자 삼각형입니다. 프랑스 수학자 파스칼의 이름을 붙였습니다. |
합성곱(convolution) | 커널을 한 칸씩 밀며 이웃과 곱해 더하는 계산을 넓게 이르는 말입니다. convolution 은 "말아 겹침"이라는 뜻입니다. 딥러닝의 CNN(Convolutional Neural Network, 합성곱 신경망)도 이 계산을 씁니다. |
cv2.filter2D | 직접 만든 커널로 필터를 거는 OpenCV 함수입니다. 2D 는 two-dimensional(2차원, 가로와 세로)을 줄인 말입니다. |
평균 절대 차이(MAE, Mean Absolute Error) | 두 사진의 칸마다 차이를 양수로 바꿔 평균 낸 값입니다. 작을수록 두 사진이 닮았습니다. |
PSNR(Peak Signal-to-Noise Ratio) | 원본과 얼마나 닮았는지를 데시벨로 나타낸 점수입니다. "최대 신호 대 잡음비"라는 뜻이고, 클수록 원본에 가깝습니다. |
데시벨(dB, decibel) | 크기의 비율을 나타내는 단위입니다. 전화를 만든 벨(Bell)의 이름에 deci(10분의 1)를 붙였습니다. |
7장 · Median 과 Bilateral 필터, 필터 비교
| 용어 | 설명 |
|---|---|
임펄스 노이즈(impulse noise) | Salt & Pepper 노이즈의 다른 이름입니다. impulse 는 "순간적인 충격"이라는 뜻으로, 칸 하나가 갑자기 튄다는 말입니다. |
가우시안 노이즈(Gaussian noise) | 6장에서 본, 모든 칸이 종 모양으로 조금씩 흔들려 자글자글해 보이는 노이즈입니다. |
커널(kernel) | 6장에서 본, 이웃 칸에 겹쳐 곱할 작은 숫자 표입니다. 곱할 표가 없는 Median 필터에서도 한 번에 보는 이웃의 크기(3×3, 5×5)를 커널 크기라고 부릅니다. |
평균 필터(mean filter) | 6장에서 본, 이웃 칸을 같은 무게로 평균 내는 필터입니다. OpenCV 에서는 cv2.blur 입니다. |
Gaussian 필터(Gaussian filter) | 6장에서 본, 가까운 칸에 더 큰 무게를 주는 가중 평균 필터입니다. OpenCV 에서는 cv2.GaussianBlur 입니다. |
중앙값(median) | 값을 작은 것부터 줄 세웠을 때 한가운데 있는 값입니다. median 은 "가운데의"라는 뜻입니다. |
Median 필터(median filter) | 커널 안 칸들의 중앙값으로 가운데 칸을 바꾸는 필터입니다. 우리말로 "중앙값 필터"라고도 합니다. |
cv2.medianBlur | Median 필터를 거는 OpenCV 함수입니다. 커널 크기 ksize 를 홀수 하나로 줍니다. |
경계(edge) | 밝기나 색이 갑자기 바뀌는 곳, 곧 물체의 테두리입니다. edge 는 "가장자리, 날"이라는 뜻입니다. 경계를 찾는 법은 10장에서 다룹니다. |
경계 보존(edge-preserving) | 노이즈를 줄이면서도 경계는 흐리지 않고 남기는 성질입니다. preserve 는 "지키다, 보존하다"라는 뜻입니다. |
Bilateral 필터(bilateral filter) | 가까우면서 밝기도 비슷한 칸만 골라 섞는 필터입니다. bilateral 은 "양쪽의"라는 뜻으로, 거리와 색 차이 두 가지를 함께 본다는 점과 맞닿아 있습니다. |
cv2.bilateralFilter | Bilateral 필터를 거는 OpenCV 함수입니다. d, sigmaColor, sigmaSpace 세 값을 받습니다. |
색 차이 무게(range weight) | Bilateral 필터가 이웃 칸의 밝기가 가운데 칸과 얼마나 다른지 보고 주는 무게입니다. 차이가 클수록 0 에 가까워집니다. range 는 "값의 범위"라는 뜻입니다. |
d(diameter) | cv2.bilateralFilter 가 들여다보는 이웃의 지름(칸 수)입니다. diameter 는 "지름"이라는 뜻입니다. |
sigmaColor | Bilateral 필터에서 "밝기가 얼마나 달라도 섞어 줄까"를 정하는 값입니다. sigma(σ, 시그마)는 퍼진 정도를 나타낼 때 쓰는 그리스 글자입니다. |
sigmaSpace | Bilateral 필터에서 "얼마나 먼 칸까지 섞어 줄까"를 정하는 값입니다. space 는 "공간, 거리"라는 뜻입니다. |
평균 절대 차이(MAE, Mean Absolute Error) | 6장에서 본, 두 그림의 칸마다 차이를 양수로 바꿔 평균 낸 값입니다. 작을수록 닮았습니다. |
PSNR(Peak Signal-to-Noise Ratio) | 6장에서 본, 원본과 닮은 정도를 데시벨(dB)로 나타낸 점수입니다. 클수록 원본에 가깝습니다. |
MSE(Mean Squared Error) | 칸마다 차이를 제곱해 평균 낸 값으로, 우리말로 "평균 제곱 오차"입니다. PSNR 을 계산하는 중간값입니다. |
한 줄 밝기(intensity profile) | 그림의 가로 한 줄을 골라 칸마다 밝기를 선 그래프로 그린 것입니다. profile 은 "옆모습, 단면"이라는 뜻입니다. |
time.perf_counter | 걸린 시간을 아주 잘게 재는 파이썬 함수입니다. performance counter(성능 측정용 시계)를 줄인 이름입니다. |
8장 · Threshold, Adaptive Threshold, Otsu
| 용어 | 설명 |
|---|---|
이진화(binarization) | 그림의 칸을 두 가지 값(보통 0 과 255)으로만 나누는 일입니다. binary 는 "둘로 된"이라는 뜻입니다. |
이진 그림(binary image) | 0 과 255 두 값만 가진 흑백 그림입니다. 3장에서 본 마스크가 바로 이진 그림입니다. |
임계값(threshold) | 두 무리를 나누는 기준 숫자, 곧 커트라인입니다. threshold 는 "문지방"이라는 뜻으로, 넘으면 다른 방에 들어간다는 말입니다. |
cv2.threshold | 그림 전체에 임계값 하나를 대어 이진화하는 OpenCV 함수입니다. |
전역 임계값(global threshold) | 그림 전체에 똑같이 쓰는 임계값 하나입니다. global 은 "전체에 걸친"이라는 뜻입니다. |
maxval(maximum value) | 임계값을 넘은 칸에 넣을 값입니다. 보통 255(흰색)를 줍니다. |
THRESH_BINARY | 임계값보다 크면 maxval, 아니면 0 으로 바꾸는 방식입니다. |
INV(inverse) | 결과의 흑백을 뒤집는다는 표시입니다. inverse 는 "거꾸로"라는 뜻입니다. |
THRESH_TRUNC(truncate) | 임계값보다 큰 값을 임계값으로 깎고 나머지는 그대로 두는 방식입니다. truncate 는 "윗부분을 잘라 내다"라는 뜻입니다. |
THRESH_TOZERO(to zero) | 임계값 이하인 칸만 0 으로 만들고 큰 칸은 그대로 두는 방식입니다. 이름은 "0 으로"라는 뜻입니다. |
봉우리(peak) | 히스토그램에서 막대가 높이 모인 곳입니다. 바탕과 물체가 저마다 봉우리를 만듭니다. |
골짜기(valley) | 두 봉우리 사이의 낮은 곳입니다. 커트라인을 두기 좋은 자리입니다. |
조명 불균일(uneven illumination) | 그림의 자리마다 빛의 세기가 다른 상태입니다. 한쪽이 그늘진 문서 사진이 대표적입니다. uneven 은 "고르지 않은"이라는 뜻입니다. |
Adaptive Threshold(적응형 임계값) | 칸마다 주변의 밝기를 보고 임계값을 따로 정하는 방법입니다. adaptive 는 "형편에 맞추는"이라는 뜻입니다. |
cv2.adaptiveThreshold | Adaptive Threshold 를 하는 OpenCV 함수입니다. |
blockSize(블록 크기) | Adaptive Threshold 가 둘러보는 주변 네모의 한 변 칸 수입니다. 1 보다 큰 홀수여야 합니다. |
C(상수, constant) | Adaptive Threshold 에서 주변 평균에서 빼는 숫자입니다. constant 는 "바뀌지 않는 수"라는 뜻입니다. |
ADAPTIVE_THRESH_MEAN_C | 주변 칸을 똑같이 더해 나눈 평균에서 C 를 빼 기준으로 쓰는 방식입니다. mean 은 "평균"이라는 뜻입니다. |
ADAPTIVE_THRESH_GAUSSIAN_C | 가운데에 가까운 칸일수록 무게를 더 준 평균에서 C 를 빼 기준으로 쓰는 방식입니다. Gaussian 은 수학자 가우스(Gauss)의 이름에서 왔습니다. |
가중 평균(weighted mean) | 값마다 무게를 달리 주고 낸 평균입니다. weight 는 "무게"라는 뜻입니다. |
Otsu 알고리즘(Otsu's method) | 두 무리가 가장 멀리 떨어지게 하는 임계값을 자동으로 고르는 방법입니다. 일본의 오츠 노부유키(大津展之)가 1979년에 발표해 그의 이름이 붙었습니다. |
무리 사이 분산(between-class variance) | 두 무리의 평균이 얼마나 떨어져 있는지를 비율까지 넣어 잰 숫자입니다. Otsu 는 이 숫자가 가장 큰 임계값을 고릅니다. variance 는 "퍼진 정도"라는 뜻입니다. |
THRESH_OTSU | cv2.threshold 에 Otsu 로 임계값을 고르라고 알리는 표시입니다. |
노이즈(noise) | 그림에 섞인 자잘한 잡티입니다. noise 는 "소음"이라는 뜻으로, 원하지 않는 신호라는 말입니다. |
가우시안 블러(Gaussian blur) | 칸마다 주변 칸과 무게를 달리해 섞어 그림을 부드럽게 하는 필터입니다. 6장에서 배웁니다. blur 는 "흐리게 하다"라는 뜻입니다. |
9장 · Morphology: 침식, 팽창, 열기, 닫기
| 용어 | 설명 |
|---|---|
모폴로지(morphology) | 이진 그림의 흰 덩어리 모양을 깎거나 부풀려 고치는 영상처리입니다. 그리스어 morphē(모양)와 logos(학문)를 붙인 말로, 본래 "모양을 다루는 학문"이라는 뜻입니다. |
이진 그림(binary image) | 8장에서 본, 0 과 255 두 값만 가진 흑백 그림입니다. 3장의 마스크도 이진 그림입니다. |
흰 덩어리(foreground blob) | 이진 그림에서 흰 칸(255)이 이어져 생긴 한 무더기입니다. 모폴로지는 흰 칸을 물체로 보고 그 모양을 고칩니다. blob 은 "작은 덩어리"라는 뜻입니다. |
구조 요소(structuring element) | 모폴로지가 칸마다 겹쳐 보는 작은 0/1 표, 곧 "모양 도장"입니다. structuring 은 "짜임을 만드는"이라는 뜻입니다. |
cv2.getStructuringElement | 네모, 십자, 타원 모양의 구조 요소를 만들어 주는 OpenCV 함수입니다. 이름은 "구조 요소 얻기"라는 뜻입니다. |
MORPH_RECT(rectangle) | 모든 칸이 1 인 네모 도장입니다. rectangle 은 "직사각형"이라는 뜻입니다. |
MORPH_CROSS | 가운데 가로줄과 세로줄만 1 인 십자 도장입니다. cross 는 "십자"라는 뜻입니다. |
MORPH_ELLIPSE | 네모 안에 들어가는 타원 자리만 1 인 둥근 도장입니다. ellipse 는 "타원"이라는 뜻입니다. |
침식(erosion) | 도장 안이 모두 흰 칸일 때만 흰색을 남기는 연산입니다. 흰 덩어리가 한 겹 깎입니다. 라틴어 erodere(갉아 먹다)에서 온 말입니다. |
cv2.erode | 침식을 하는 OpenCV 함수입니다. erode 는 "깎아 내다"라는 뜻입니다. |
팽창(dilation) | 도장 안에 흰 칸이 하나라도 있으면 흰색으로 만드는 연산입니다. 흰 덩어리가 한 겹 부풉니다. 라틴어 dilatare(넓히다)에서 온 말입니다. |
cv2.dilate | 팽창을 하는 OpenCV 함수입니다. dilate 는 "넓히다, 부풀리다"라는 뜻입니다. |
iterations(반복 횟수) | 같은 침식이나 팽창을 몇 번 되풀이할지 정하는 인자입니다. iteration 은 "되풀이"라는 뜻입니다. |
열기(opening) | 침식한 뒤 같은 도장으로 팽창하는 연산입니다. 흰 잡티를 지우고 붙어 있던 덩어리 사이를 엽니다. open 은 "열다"라는 뜻입니다. |
닫기(closing) | 팽창한 뒤 같은 도장으로 침식하는 연산입니다. 검은 구멍과 끊긴 틈을 메웁니다. close 는 "닫다"라는 뜻입니다. |
cv2.morphologyEx | 열기, 닫기, 그레이디언트 같은 조합 연산을 하는 OpenCV 함수입니다. OpenCV 공식 문서는 "고급(advanced) 모폴로지 변환을 한다"고 설명합니다. |
모폴로지 그레이디언트(morphological gradient) | 팽창한 그림에서 침식한 그림을 뺀 것입니다. 흰 덩어리의 테두리만 남습니다. gradient 는 "기울기, 바뀌는 정도"라는 뜻입니다. |
탑햇(top hat) | 원본에서 열기 결과를 뺀 것입니다. 도장보다 작은 흰 것만 남습니다. top hat 은 "높은 신사 모자"라는 뜻이고, 이름이 붙은 까닭은 자료마다 설명이 달라 여기서는 뜻만 적습니다. |
블랙햇(black hat) | 닫기 결과에서 원본을 뺀 것입니다. 도장보다 작은 검은 구멍과 틈만 남습니다. black hat 은 "검은 모자"라는 뜻입니다. |
연결 요소(connected component) | 서로 맞닿아 이어진 흰 칸의 무리, 곧 흰 덩어리 하나입니다. component 는 "구성 요소"라는 뜻입니다. |
cv2.connectedComponents | 이진 그림의 흰 덩어리마다 번호를 매기고 개수를 알려 주는 OpenCV 함수입니다. 이 장에서는 개수만 쓰고, 자세한 쓰임은 12장에서 배웁니다. |
잡티(speck) | 이진 그림의 바탕에 튄 작은 흰 점입니다. speck 은 "작은 얼룩, 티끌"이라는 뜻입니다. |
맞힌 칸 비율(pixel accuracy) | 결과 그림과 정답 그림을 칸마다 견줘 같은 칸이 몇 할인지 잰 값입니다. 8장의 프로젝트에서 쓴 "정확도"와 같습니다. accuracy 는 "정확함"이라는 뜻입니다. |
10장 · Sobel 과 Laplacian 경계 검출
| 용어 | 설명 |
|---|---|
경계 검출(edge detection) | 그림에서 밝기가 갑자기 바뀌는 곳(경계)을 찾아내는 일입니다. detection 은 "찾아냄, 탐지"라는 뜻입니다. 경계의 뜻은 7장에서 짚었습니다. |
밝기 단면(intensity profile) | 그림에서 한 줄을 잘라 칸마다의 밝기를 차례로 늘어놓은 것입니다. profile 은 "옆모습, 윤곽"이라는 뜻입니다. |
변화량(difference) | 옆 칸끼리 뺀 값입니다. 0 이면 밝기가 그대로이고, 클수록 갑자기 바뀝니다. |
기울기(gradient) | 밝기가 어느 쪽으로, 얼마나 가파르게 바뀌는지입니다. gradient 는 라틴어 gradi(걷다, 오르다)에서 온 말로 "비탈의 가파른 정도"라는 뜻입니다. |
가로 기울기(gx) | 가로 방향(오른쪽 − 왼쪽)의 밝기 변화량입니다. 세로로 선 경계에서 커집니다. x 는 가로축입니다. |
세로 기울기(gy) | 세로 방향(아래 − 위)의 밝기 변화량입니다. 가로로 누운 경계에서 커집니다. y 는 세로축입니다. |
차이 커널(difference kernel) | [-1, 0, 1] 처럼 한쪽을 빼고 한쪽을 더해 변화량을 재는 커널입니다. |
Sobel 연산자(Sobel operator) | 빼기 커널에 가운데 줄 무게(1-2-1)를 더한 3×3 커널로 기울기를 재는 방법입니다. 1968년에 이를 소개한 어윈 소벨(Irwin Sobel)의 이름을 붙였습니다. operator 는 "계산하는 것, 연산자"라는 뜻입니다. |
cv2.Sobel | Sobel 연산자로 가로나 세로 기울기를 구하는 OpenCV 함수입니다. |
dx, dy | cv2.Sobel 에 주는 숫자로, 가로(x)와 세로(y)로 몇 번 뺄지 고릅니다. d 는 difference(차이)의 머리글자로 읽으면 됩니다. |
ddepth(destination depth) | 결과 그림의 자료형입니다. destination 은 "도착지", depth 는 "칸 하나에 담는 숫자의 깊이(자료형)"라는 뜻입니다. |
CV_64F | OpenCV 의 64비트 소수 자료형 이름입니다. 64-bit Float 를 줄인 말로, 음수와 255 넘는 수를 그대로 담습니다. NumPy 의 float64 와 같습니다. |
cv2.convertScaleAbs | 값에 배율을 곱하고 절댓값(absolute value)을 취한 뒤 0~255 로 잘라 uint8 로 바꾸는 함수입니다. convert scale absolute(배율 바꾸고 절댓값)를 줄인 이름입니다. |
기울기의 크기(magnitude) | 가로 기울기와 세로 기울기를 피타고라스 정리로 합친 값입니다. 경계가 얼마나 뚜렷한지를 하나의 숫자로 알려 줍니다. magnitude 는 "크기, 규모"라는 뜻입니다. |
기울기의 방향(direction) | 밝기가 가장 가파르게 밝아지는 쪽입니다. 경계 선과는 직각입니다. |
피타고라스 정리(Pythagorean theorem) | 직각삼각형에서 빗변의 제곱이 나머지 두 변의 제곱을 더한 값과 같다는 정리입니다. 고대 그리스의 피타고라스 이름을 붙였습니다. |
cv2.magnitude | 가로·세로 기울기 두 장을 받아 칸마다 √(gx² + gy²) 를 계산하는 OpenCV 함수입니다. |
cv2.phase | 가로·세로 기울기 두 장을 받아 칸마다 기울기의 방향(각도)을 계산하는 OpenCV 함수입니다. phase 는 "위상, 각도"라는 뜻입니다. |
Scharr 필터(Scharr filter) | 3×3 크기에서 Sobel 보다 방향을 더 정확히 재도록 무게를 3-10-3 으로 고른 커널입니다. 이를 제안한 한노 샤르(Hanno Scharr)의 이름을 붙였습니다. |
Laplacian(라플라시안) | 변화량의 변화량, 곧 두 번 뺀 값을 재는 계산입니다. 프랑스 수학자 라플라스(Laplace)의 이름을 붙였습니다. |
영교차(zero crossing) | 값이 + 에서 − 로(또는 거꾸로) 바뀌며 0 을 지나는 곳입니다. Laplacian 에서는 이곳이 경계입니다. crossing 은 "건너가기"라는 뜻입니다. |
LoG(Laplacian of Gaussian) | Gaussian 블러를 먼저 걸고 Laplacian 을 거는 짝입니다. "Gaussian 의 Laplacian"이라는 뜻입니다. |
경계 지도(edge map) | 경계인 칸은 흰색(255), 아닌 칸은 검정(0)으로 칠한 흑백 그림입니다. map 은 "지도"라는 뜻입니다. |
11장 · Canny 와 Edge 비교
| 용어 | 설명 |
|---|---|
기울기의 크기와 방향(magnitude, direction) | 10장에서 본 것처럼, 크기는 가로 기울기(gx)와 세로 기울기(gy)를 합친 경계의 뚜렷함이고, 방향은 밝기가 가장 가파르게 바뀌는 쪽입니다. Canny 는 이 두 값을 재료로 씁니다. |
Canny 경계 검출(Canny edge detector) | 존 캐니(John Canny)가 1986년 논문에서 내놓은 경계 검출 방법입니다. 만든 사람의 이름을 땄습니다. |
비최대 억제(non-maximum suppression) | 기울기 방향을 따라 이웃 두 칸보다 큰 칸만 남기고 나머지를 지우는 단계입니다. 줄여서 NMS 라고도 씁니다. suppression 은 "누름, 억누름"이라는 뜻입니다. |
이력 임계값(hysteresis thresholding) | 높은 기준을 넘은 확실한 선과, 거기에 이어진 애매한 선만 살리는 단계입니다. hysteresis 는 그리스어로 "뒤처짐"이라는 뜻으로, 지금 상태가 지나온 내력에 따라 달라진다는 말입니다. |
강한 경계(strong edge) | 높은 기준(high)을 넘은 칸입니다. 무조건 경계로 남습니다. |
약한 경계(weak edge) | 낮은 기준(low)과 높은 기준 사이에 있는 칸입니다. 강한 경계와 이어져 있을 때만 남습니다. |
threshold1, threshold2 | cv2.Canny 에 주는 두 기준값입니다. 작은 쪽이 low, 큰 쪽이 high 로 쓰입니다. threshold 는 8장에서 본 "문지방, 커트라인"입니다. |
apertureSize(구멍 크기) | cv2.Canny 가 기울기를 잴 때 쓰는 Sobel 커널의 크기입니다. 3, 5, 7 가운데 하나입니다. aperture 는 "구멍, 틈"이라는 뜻입니다. |
L2gradient | 기울기 크기를 피타고라스 식(√(gx² + gy²))으로 잴지 정하는 인자입니다. L2 는 "제곱해 더하고 제곱근을 씌운 거리"를 부르는 수학 이름입니다. |
중앙값(median) | 값을 크기 순으로 늘어놓았을 때 한가운데 오는 값입니다. 7장의 Median 필터가 쓰던 그 값입니다. |
경험 규칙(rule of thumb) | 이론으로 증명된 것이 아니라 많이 써 보니 대체로 잘 맞더라는 규칙입니다. 엄지손가락으로 길이를 대충 재던 데서 온 말로 알려져 있습니다. |
정답 경계(ground truth) | 실제 경계가 어디인지 미리 알고 있는 그림입니다. ground truth 는 "땅 위에서 직접 확인한 사실"이라는 뜻입니다. |
팽창(dilation) | 9장에서 본 모폴로지 연산으로, 구조 요소 안에 흰 칸이 하나라도 있으면 흰색으로 만들어 흰 덩어리를 한 겹 부풀립니다. 이 장에서는 정답 경계를 한 칸 넓히는 데 씁니다. |
허용 거리(tolerance) | 찾은 경계가 정답에서 몇 칸까지 어긋나도 맞힌 것으로 칠지 정한 여유입니다. tolerance 는 "참아 주는 정도"라는 뜻입니다. |
정밀도(precision) | 찾은 경계 가운데 정답 근처에 있는 칸의 비율입니다. 헛것을 적게 찾을수록 높습니다. precision 은 "정확함, 꼼꼼함"이라는 뜻입니다. |
재현율(recall) | 정답 경계 가운데 찾아낸 칸의 비율입니다. 빠뜨린 것이 적을수록 높습니다. recall 은 "다시 불러냄, 기억해 냄"이라는 뜻입니다. |
F1 점수(F1 score) | 정밀도와 재현율을 하나로 합친 점수입니다. 2 × 정밀도 × 재현율 ÷ (정밀도 + 재현율)로 계산하고, 둘 다 높아야 높게 나옵니다. |
연결 요소(connected component) | 서로 이어진 흰 칸끼리 묶은 덩어리 하나입니다. component 는 "부품, 이루는 한 부분"이라는 뜻입니다. |
cv2.connectedComponents | 이진 그림에서 이어진 흰 덩어리를 찾아 번호를 매기는 OpenCV 함수입니다. |
12장 · Contour Detection 과 객체 분석
| 용어 | 설명 |
|---|---|
윤곽선(contour) | 흰 덩어리의 테두리를 따라 이은 점들의 목록입니다. contour 는 "바깥 둘레, 등고선"이라는 뜻입니다. 지도의 등고선처럼 같은 높이(같은 흰색)의 가장자리를 따라 긋는 선이라는 데서 온 이름입니다. |
윤곽선 검출(contour detection) | 이진 그림에서 윤곽선을 모두 찾아내는 일입니다. detection 은 "찾아냄"이라는 뜻입니다. |
이진 그림(binary image) | 8장에서 본 것처럼 칸마다 0(검정)과 255(흰색) 두 값만 있는 그림입니다. 윤곽선 찾기의 입력입니다. |
경계(edge) | 10장, 11장에서 본, 밝기가 크게 바뀌는 칸입니다. 경계는 칸의 모음이고 윤곽선은 물체마다 이어진 점 목록이라는 점이 다릅니다. |
cv2.findContours | 이진 그림에서 윤곽선을 찾는 OpenCV 함수입니다. find(찾다)와 contours(윤곽선들)를 붙인 이름입니다. |
계층 구조(hierarchy) | 윤곽선끼리 누가 누구 안에 있는지 적은 표입니다. hierarchy 는 "위아래 차례가 있는 짜임"이라는 뜻입니다. |
부모와 자식(parent, child) | 바깥 윤곽선이 부모, 그 바로 안쪽의 윤곽선이 자식입니다. 도넛의 바깥 테두리가 부모이고 구멍의 테두리가 자식입니다. |
찾는 방식(retrieval mode) | 윤곽선을 바깥 것만 찾을지, 모두 찾을지, 부모 자식까지 적을지 정하는 인자입니다. retrieval 은 "되찾아 옴, 꺼내 옴"이라는 뜻이고, 상수 이름의 RETR 가 이 말의 줄임입니다. |
RETR_EXTERNAL | 가장 바깥의 윤곽선만 찾는 방식입니다. external 은 "바깥의"라는 뜻입니다. |
RETR_LIST | 모든 윤곽선을 부모 자식 없이 목록(list)으로 찾는 방식입니다. |
RETR_TREE | 모든 윤곽선을 찾고 부모 자식 관계를 나무(tree) 모양으로 모두 적는 방식입니다. |
근사 방식(approximation method) | 윤곽선의 점을 모두 담을지, 곧은 줄의 가운데 점을 뺄지 정하는 인자입니다. approximation 은 "어림, 가깝게 만들기"라는 뜻입니다. |
CHAIN_APPROX_NONE, CHAIN_APPROX_SIMPLE | 점을 모두 담는 방식(NONE, 줄이지 않음)과 곧은 줄의 양 끝만 남기는 방식(SIMPLE, 간단히)입니다. chain 은 테두리 칸을 사슬처럼 이어 따라간다는 데서 붙은 말입니다. |
cv2.drawContours | 찾은 윤곽선을 그림 위에 그리는 함수입니다. draw 는 "그리다"라는 뜻입니다. |
면적(area) | 윤곽선이 둘러싼 넓이입니다. cv2.contourArea 로 재고, 단위는 칸 하나의 넓이입니다. |
둘레(perimeter) | 윤곽선의 길이입니다. cv2.arcLength 로 잽니다. arc 는 "호, 굽은 선"이라는 뜻입니다. |
모멘트(moments) | 흰 칸의 개수와 좌표의 합처럼 덩어리를 요약한 숫자 묶음입니다. 물리에서 "회전시키는 힘의 크기"를 뜻하던 말을 빌려 왔습니다. |
무게중심(centroid) | 흰 칸들의 x 좌표 평균과 y 좌표 평균인 점입니다. 판을 그 점 하나로 받치면 기울지 않고 균형이 맞습니다. centroid 는 center(가운데)에서 온 말입니다. |
바운딩 박스(bounding box) | 물체를 빈틈없이 감싸는 네모 상자입니다. bounding 은 "경계를 정하는, 둘러싸는"이라는 뜻입니다. 곧은 상자는 cv2.boundingRect(Rect 는 rectangle, 직사각형)로 구합니다. |
회전 상자(rotated rectangle) | 물체를 감싸는 네모 가운데 넓이가 가장 작은 것입니다. 물체를 따라 기울어집니다. cv2.minAreaRect(minimum area rectangle, 넓이가 가장 작은 직사각형)로 구합니다. |
최소 외접원(minimum enclosing circle) | 윤곽선의 모든 점을 품는 원 가운데 가장 작은 원입니다. enclosing 은 "둘러싸는"이라는 뜻입니다. |
연결 요소(connected component) | 11장에서 본 것처럼, 서로 맞닿은 흰 칸끼리 묶은 덩어리 하나입니다. |
cv2.connectedComponentsWithStats | 9장의 cv2.connectedComponents 에 통계(stats, statistics)를 더한 함수입니다. 덩어리마다 번호와 함께 면적, 상자, 무게중심을 한 번에 돌려줍니다. |
잡티(speck) | 이진화 뒤에 남은, 물체가 아닌 작은 흰 점입니다. 먼지나 노이즈에서 생깁니다. |
13장 · Shape 분석과 ROI 처리
| 용어 | 설명 |
|---|---|
윤곽선(contour) | 12장에서 본, 흰 덩어리의 테두리를 따라 이은 점들의 목록입니다. 면적(cv2.contourArea), 둘레(cv2.arcLength), 바운딩 박스(cv2.boundingRect), 회전 상자(cv2.minAreaRect)도 12장에서 풀었으므로 이 장에서는 다시 풀지 않습니다. |
모양 특징(shape feature) | 윤곽선에서 계산한, 모양을 나타내는 숫자입니다. 원형도, 종횡비 같은 것입니다. feature 는 "생김새의 특징"이라는 뜻입니다. |
근사 다각형(polygon approximation) | 울퉁불퉁한 윤곽선을 꼭짓점 몇 개짜리 다각형으로 단순하게 바꾼 것입니다. approximation 은 "가깝게 어림함"이라는 뜻입니다. |
cv2.approxPolyDP | 윤곽선을 근사 다각형으로 바꾸는 OpenCV 함수입니다. approximate polygon(다각형으로 어림)과 DP(Douglas-Peucker, 이 방법을 만든 더글러스와 퍼커)를 붙인 이름입니다. |
epsilon(엡실론) | approxPolyDP 에 주는 "봐줄 만큼의 비뚤어짐"입니다. 그리스 문자 ε 의 이름으로, 수학에서 작은 양을 나타낼 때 흔히 씁니다. |
꼭짓점(vertex) | 다각형의 모서리 점입니다. 세모는 3개, 네모는 4개입니다. vertex 는 라틴어로 "꼭대기"라는 뜻입니다. |
원형도(circularity) | 모양이 원에 얼마나 가까운지를 나타낸 숫자입니다. 4π×넓이 ÷ 둘레² 로 구하고, 원이면 1 입니다. circular 는 "둥근"이라는 뜻입니다. |
종횡비(aspect ratio) | 가로 길이를 세로 길이로 나눈 값입니다. 縱(세로)과 橫(가로)의 비라는 말이고, aspect 는 "보이는 모습"이라는 뜻입니다. |
채움 비율(extent) | 물체의 넓이를 물체를 감싼 네모 상자의 넓이로 나눈 값입니다. 상자를 얼마나 꽉 채웠는지 알려 줍니다. extent 는 "차지한 범위"라는 뜻입니다. |
볼록 껍질(convex hull) | 물체를 고무줄로 감쌌을 때 고무줄이 만드는 모양입니다. convex 는 "볼록한", hull 은 "껍질, 배의 몸통"이라는 뜻입니다. |
볼록 비율(solidity) | 물체의 넓이를 볼록 껍질의 넓이로 나눈 값입니다. 움푹 들어간 곳이 많을수록 작아집니다. solid 는 "속이 꽉 찬"이라는 뜻입니다. |
cv2.convexHull | 윤곽선의 볼록 껍질을 구하는 OpenCV 함수입니다. |
cv2.isContourConvex | 윤곽선이 볼록한지(움푹한 곳이 없는지) True, False 로 알려 주는 함수입니다. is contour convex(윤곽선이 볼록한가)를 그대로 붙인 이름입니다. |
규칙 기반 분류(rule-based classification) | 사람이 정한 if 규칙으로 이름을 붙이는 방법입니다. 데이터로 배우는 딥러닝과 견주어 쓰는 말입니다. rule 은 "규칙"이라는 뜻입니다. |
관심 영역(ROI, Region Of Interest) | 사진에서 따로 살펴보고 싶은 부분입니다. 4장에서 이름만 나왔고, 이 장에서 자세히 다룹니다. region 은 "구역", interest 는 "관심"이라는 뜻입니다. |
여백(margin) | 잘라 낼 상자의 둘레에 더 붙이는 몇 칸입니다. 물체가 상자 끝에 딱 붙어 잘리지 않게 합니다. margin 은 "가장자리, 여유"라는 뜻입니다. |
np.clip | 숫자를 정한 범위 안으로 밀어 넣는 NumPy 함수입니다. clip 은 "잘라 내다, 깎다"라는 뜻입니다. |
cv2.fillPoly | 꼭짓점 목록으로 다각형을 그려 속까지 채우는 함수입니다. fill polygon(다각형 채우기)을 줄인 이름입니다. |
cv2.bitwise_and | 마스크의 흰 칸만 원래 값을 남기는 함수입니다. 3장에서 색으로 과일을 고를 때 썼습니다. bitwise 는 "비트 단위로", and 는 "그리고"라는 뜻입니다. |
cv2.selectROI | 창에 그림을 띄우고 사람이 마우스로 네모를 그려 관심 영역을 고르게 하는 함수입니다. select ROI(관심 영역 고르기)라는 뜻입니다. |
붙여 넣기(paste back) | 잘라 내어 처리한 조각을 원본의 같은 자리에 다시 넣는 일입니다. 이 장에서는 슬라이싱에 값을 대입해서 합니다. |
14장 · 영상 기하학 변환과 Affine, Perspective
| 용어 | 설명 |
|---|---|
기하학 변환(geometric transformation) | 칸의 값은 그대로 두고 칸의 자리를 옮기는 일입니다. geometry 는 그리스어 geo(땅)와 metron(재기)에서 온 말로, 모양과 자리를 다루는 수학입니다. |
좌표(coordinate) | 그림에서 칸의 자리를 가리키는 두 숫자 (x, y) 입니다. 2장에서 본 것처럼 x 는 가로, y 는 세로이고 왼쪽 위가 (0, 0) 입니다. |
크기 바꾸기(resize) | 그림의 가로·세로 칸 수를 바꾸는 일입니다. re(다시)와 size(크기)를 붙인 말입니다. |
종횡비(aspect ratio) | 가로와 세로의 비율입니다. 320×240 은 4:3 입니다. aspect 는 "모습, 생김새"라는 뜻입니다. |
보간법(interpolation) | 새로 생긴 칸의 값을 이웃 칸으로 짐작해 채우는 방법입니다. 라틴어 interpolare(사이에 끼워 넣다)에서 온 말입니다. |
최근접 이웃(nearest neighbor) | 가장 가까운 칸의 값을 그대로 가져오는 보간법입니다. OpenCV 의 INTER_NEAREST 입니다. |
양선형 보간(bilinear interpolation) | 가로와 세로 두 방향으로 이웃 값 사이를 고르게 나눠 채우는 보간법입니다. bi(둘)와 linear(직선의)를 붙인 말이고, OpenCV 의 INTER_LINEAR 입니다. |
바이큐빅 보간(bicubic interpolation) | 둘레 16칸을 보고 매끈한 곡선으로 채우는 보간법입니다. cubic 은 "세제곱의"라는 뜻으로, 세제곱 식의 곡선을 쓴다는 말입니다. |
넓이 평균(area interpolation) | 줄일 때 새 칸 하나가 덮는 옛 칸들의 평균을 내는 방법입니다. OpenCV 의 INTER_AREA 입니다. |
계단 현상(aliasing) | 고운 무늬를 거칠게 줄일 때 엉뚱한 줄무늬나 들쭉날쭉한 모양이 생기는 일입니다. alias 는 "가명"이라는 뜻으로, 고운 무늬가 다른 무늬로 둔갑한다는 말입니다. |
가운데 자르기(center crop) | 그림의 한가운데를 원하는 비율만큼 잘라 내는 일입니다. crop 은 "짧게 자르다"라는 뜻입니다. |
여백 채우기(padding) | 그림의 둘레에 칸을 덧대는 일입니다. pad 는 "속을 덧대다"라는 뜻입니다. |
레터박스(letterbox) | 비율을 지켜 줄인 뒤 남는 곳을 여백으로 채워 정해진 크기를 맞추는 방법입니다. 영화를 TV 에 틀 때 위아래에 생기는 검은 띠가 우편함 투입구(letterbox)를 닮아 붙은 이름입니다. |
뒤집기(flip) | 그림을 좌우나 위아래로 거울에 비친 듯 바꾸는 일입니다. flip 은 "휙 뒤집다"라는 뜻입니다. |
평행 이동(translation) | 모든 칸을 같은 방향, 같은 거리만큼 옮기는 일입니다. translate 는 "옮기다"라는 뜻입니다. |
회전(rotation) | 한 점을 중심으로 그림을 돌리는 일입니다. rotate 는 "돌다"라는 뜻입니다. |
아핀 변환(affine transformation) | 옮기기, 돌리기, 키우기, 기울이기를 묶은 변환입니다. 곧은 선은 곧게, 평행한 선은 평행하게 남습니다. affine 은 라틴어 affinis(이웃의, 관계 있는)에서 온 말입니다. |
변환 표(transformation matrix) | 점을 옮기는 규칙을 적은 숫자 표입니다. 아핀은 2×3, 원근은 3×3 입니다. OpenCV 문서는 matrix 라고 부르고 이름을 M 으로 씁니다. |
기울이기(shear) | 위쪽과 아래쪽을 서로 반대로 밀어 네모를 평행사변형으로 만드는 일입니다. shear 는 "가위로 베다"라는 뜻으로, 쌓인 층이 미끄러지듯 밀리는 모양을 말합니다. |
원근 변환(perspective transformation) | 비스듬히 본 평면을 바로 앞에서 본 것처럼 바꾸는 변환입니다. perspective 는 라틴어 perspicere(꿰뚫어 보다)에서 온 말입니다. |
cv2.warpAffine | 2×3 변환 표대로 그림을 옮기는 OpenCV 함수입니다. warp 는 "휘다, 비틀다"라는 뜻입니다. |
cv2.warpPerspective | 3×3 변환 표대로 그림을 원근 변환하는 OpenCV 함수입니다. |
빈 곳 채우기 값(borderValue) | 옮기고 돌린 뒤 원본이 닿지 않는 빈 칸에 칠할 색입니다. 기본값은 검정(0)입니다. |
데이터 증강(data augmentation) | 뒤집고 돌리고 크기를 바꾼 사진을 더해 학습 데이터를 늘리는 일입니다. augment 는 "늘리다"라는 뜻입니다. 16장에서 다룹니다. |
15장 · 비디오 처리와 실시간 영상처리
| 용어 | 설명 |
|---|---|
프레임(frame) | 동영상을 이루는 사진 한 장입니다. frame 은 "틀, 액자"라는 뜻으로, 필름의 한 칸을 가리키던 말입니다. |
FPS(Frames Per Second) | 1초에 보여 주는 프레임 수입니다. 10fps 면 1초에 10장, 한 장에 0.1초입니다. |
프레임 간격(frame interval) | 한 프레임이 나온 뒤 다음 프레임이 나올 때까지의 시간입니다. 1000ms ÷ FPS 로 구합니다. interval 은 "사이, 간격"이라는 뜻입니다. |
ms(millisecond, 밀리초) | 1000분의 1초입니다. milli 는 "1000분의 1"이라는 뜻입니다. |
코덱(codec) | 동영상을 작게 묶고(coder) 다시 푸는(decoder) 방식입니다. 두 낱말을 붙여 줄인 이름입니다. |
fourcc(four character code) | 코덱을 가리키는 네 글자 이름표입니다. mp4v, XVID 처럼 씁니다. 이름이 곧 "네 글자 부호"라는 뜻입니다. |
MPEG-4(Moving Picture Experts Group 4) | 동영상을 묶는 국제 표준의 하나입니다. MPEG 는 이 표준을 만든 전문가 모임의 이름입니다. mp4v 가 이 방식의 코덱입니다. |
cv2.VideoCapture | 동영상 파일이나 카메라를 여는 OpenCV 의 "재생기"입니다. capture 는 "붙잡다, 담아내다"라는 뜻입니다. |
cv2.VideoWriter | 프레임을 차례로 받아 동영상 파일로 쓰는 OpenCV 의 "녹화기"입니다. writer 는 "쓰는 것"이라는 뜻입니다. |
CAP_PROP(capture property) | 재생기의 속성(프레임 수, FPS, 크기, 지금 위치 등)을 가리키는 이름 묶음입니다. property 는 "성질, 속성"이라는 뜻입니다. |
release | 열어 둔 재생기나 녹화기를 닫아 파일과 카메라를 놓아 주는 일입니다. release 는 "놓아주다"라는 뜻입니다. |
프레임 차이(frame differencing) | 앞 프레임과 지금 프레임을 칸마다 빼서 바뀐 곳을 찾는 방법입니다. differencing 은 "차이를 구함"이라는 뜻입니다. |
cv2.absdiff(absolute difference) | 두 그림의 칸마다 차이의 절댓값(빼기 결과에서 부호를 뗀 값)을 구하는 함수입니다. |
배경 빼기(background subtraction) | 움직이지 않는 배경을 기억해 두고, 지금 프레임에서 배경을 빼서 움직이는 물체만 남기는 방법입니다. subtraction 은 "빼기"라는 뜻입니다. |
전경(foreground) | 배경 앞에서 움직이는 물체입니다. 배경 빼기의 결과에서 흰 칸입니다. fore 는 "앞"이라는 뜻입니다. |
중앙값 배경(median background) | 여러 프레임에서 칸마다 밝기를 줄 세워 가운데 값을 고른 배경입니다. 잠깐 지나간 물체는 가운데 값에 끼지 못해 지워집니다. |
MOG2(Mixture of Gaussians 2) | OpenCV 의 배경 빼기 도구입니다. 칸마다 "자주 나오는 밝기"를 여러 개 기억해 두고 그와 다르면 전경으로 봅니다. 가우스 분포(Gaussians) 여러 개를 섞어(mixture) 기억한다는 이름이고, 2는 앞선 MOG 방법을 고친 판이라는 표시입니다. |
실시간(real-time) | 프레임이 들어오는 빠르기에 맞춰, 다음 프레임이 오기 전에 처리를 끝내는 것입니다. |
프레임 건너뛰기(frame skipping) | 처리가 늦어 따라잡지 못할 때 몇 장을 처리하지 않고 넘기는 일입니다. skip 은 "건너뛰다"라는 뜻입니다. |
time.perf_counter(performance counter) | 짧은 시간을 정밀하게 재는 파이썬의 시계 함수입니다. 두 번 불러 그 차이로 걸린 시간을 잽니다. |
웹캠(webcam) | 컴퓨터에 붙여 쓰는 작은 카메라입니다. web(인터넷)과 camera 를 붙인 말로, 인터넷으로 영상을 보내던 데서 왔습니다. |
장치 번호(device index) | 컴퓨터에 붙은 카메라에 0, 1, 2 처럼 매긴 번호입니다. 카메라가 하나면 보통 0 입니다. index 는 "번호, 색인"이라는 뜻입니다. |
DirectShow(CAP_DSHOW) | Windows 가 카메라와 동영상을 다루는 오래된 방식의 이름입니다. 카메라가 잘 안 열릴 때 이 방식을 골라 열기도 합니다. |
16장 · AI 데이터 정제와 데이터 증강
| 용어 | 설명 |
|---|---|
데이터 정제(data cleaning) | 모은 데이터에서 쓸 수 없는 것을 골라내고 고칠 수 있는 것은 바로잡는 일입니다. cleaning 은 "청소"라는 뜻입니다. |
데이터 증강(data augmentation) | 뒤집고 돌리고 밝기를 바꾼 사진을 더해 학습 데이터를 늘리는 일입니다. augment 는 "늘리다"라는 뜻입니다. 14장에서 이름만 소개했습니다. |
GIGO(Garbage In, Garbage Out) | 쓰레기가 들어가면 쓰레기가 나온다는 말입니다. 나쁜 데이터로 배운 모델은 나쁜 답을 낸다는 뜻으로 씁니다. |
클래스(class) | 분류에서 붙이는 이름 하나하나입니다. 이 장의 클래스는 사과(apple), 귤(tangerine), 라임(lime) 셋입니다. 1장의 분류(classification)와 같은 뿌리의 말입니다. |
라벨(label) | 사진마다 붙인 정답 이름표입니다. label 은 "꼬리표"라는 뜻입니다. 이 장에서는 파일 이름의 앞부분이 라벨입니다. |
알파 채널(alpha channel) | 칸마다 얼마나 투명한지를 적은 넷째 채널입니다. 2장의 BGRA 그림에서 본 A 입니다. alpha 는 그리스 문자의 첫 글자로, 색 채널 뒤에 붙는 덧칸을 부르는 이름입니다. |
흐림 점수(blur score) | 사진이 얼마나 선명한지 나타내는 숫자입니다. 이 장에서는 Laplacian 결과의 분산을 씁니다. 클수록 선명합니다. |
분산(variance) | 값들이 평균에서 떨어진 거리를 제곱해 평균 낸 것입니다. 4장에서 본 표준편차를 제곱한 값과 같습니다. vary 는 "달라지다"라는 뜻입니다. |
기준값(threshold) | 이보다 작으면 버리고 크면 남기는 경계 숫자입니다. 8장의 임계값과 같은 말입니다. threshold 는 "문지방"이라는 뜻입니다. |
중복(duplicate) | 같은 사진이 이름만 달리해 두 번 이상 들어 있는 것입니다. duplicate 는 라틴어 duplex(두 겹)에서 온 말입니다. |
해시(hash) | 긴 데이터를 짧은 글자로 줄인 지문입니다. 내용이 같으면 지문도 같습니다. hash 는 "잘게 다지다"라는 뜻입니다. |
MD5(Message Digest 5) | 파일의 바이트로 32글자짜리 지문을 만드는 해시 방법입니다. digest 는 "요약"이라는 뜻이고 5 는 다섯째 판이라는 뜻입니다. |
평균 해시(average hash) | 그림을 8×8 로 줄인 뒤 평균보다 밝은 칸은 1, 어두운 칸은 0 으로 적은 64칸짜리 그림 지문입니다. 비슷한 그림은 지문도 비슷합니다. |
해밍 거리(Hamming distance) | 길이가 같은 두 지문에서 서로 다른 칸의 개수입니다. 이 셈을 처음 쓴 수학자 해밍(Hamming)의 이름을 붙였습니다. |
파일 이름 규칙(naming convention) | 파일 이름을 짓는 약속입니다. 이 장에서는 클래스_번호.png 꼴(apple_001.png)로 짓습니다. convention 은 "관례, 약속"이라는 뜻입니다. |
학습용 데이터(train set) | 모델이 보고 배우는 사진 묶음입니다. train 은 "훈련시키다"라는 뜻입니다. |
시험용 데이터(test set) | 학습이 끝난 뒤 모델의 실력을 재는 사진 묶음입니다. 학습에 쓰지 않고 따로 떼어 둡니다. |
기하 증강(geometric augmentation) | 뒤집기, 회전, 자르기, 옮기기처럼 칸의 자리를 옮겨 늘리는 증강입니다. 14장의 기하학 변환을 씁니다. |
색 증강(color augmentation) | 밝기, 대비, 색상, 블러, 노이즈처럼 칸의 값을 바꿔 늘리는 증강입니다. |
확률적 적용(random application) | 변환마다 "이번에 걸지 말지"를 주사위처럼 정하는 일입니다. rng.random() < 0.5 면 절반쯤의 사진에만 겁니다. |
씨앗(seed) | 난수 만들개의 시작 숫자입니다. 같은 씨앗이면 언제 돌려도 같은 난수가 나와 결과를 다시 만들 수 있습니다. 6장에서 노이즈를 만들 때 썼습니다. |
정답 보존(label-preserving) | 변환한 뒤에도 정답 이름표가 그대로 맞는 성질입니다. 사과를 뒤집어도 사과이므로 좌우 뒤집기는 과일 사진에서 정답을 보존합니다. |
거울 글씨(mirror writing) | 좌우를 뒤집어 거울에 비친 것처럼 된 글씨입니다. 14장에서 뒤집기의 주의할 점으로 보았습니다. |
17장 · Batch Processing 과 YOLO 데이터 준비
| 용어 | 설명 |
|---|---|
일괄 처리(batch processing) | 많은 파일을 같은 방법으로 한꺼번에 처리하는 일입니다. batch 는 빵을 한 번에 구워 내는 "한 판, 한 묶음"이라는 뜻입니다. |
자동화(automation) | 사람이 손으로 하던 반복 작업을 프로그램이 대신 하게 만드는 일입니다. automatic(저절로 움직이는)에서 온 말입니다. |
경로(path) | 파일이 어느 폴더에 있는지 적은 주소입니다. ch17_raw/part_001.png 처럼 씁니다. path 는 "길"이라는 뜻입니다. |
pathlib | 경로를 글자가 아닌 물건(객체)으로 다루게 해 주는 파이썬 표준 라이브러리입니다. path(경로)와 library(도서관)를 붙인 이름입니다. |
glob | *.png 처럼 별표가 든 무늬로 파일 이름을 찾는 방법입니다. global(전체)을 줄인 말로, 옛 유닉스에서 이름을 한꺼번에 펼치던 프로그램 이름에서 왔습니다. |
확장자(extension) | 파일 이름 끝의 .png, .jpg 처럼 파일 형식을 알려 주는 꼬리입니다. extension 은 "늘여 붙인 것"이라는 뜻입니다. |
예외 처리(exception handling) | 실행 중에 오류가 나도 프로그램이 멈추지 않고 정해 둔 대로 넘어가게 하는 일입니다. exception 은 "예외, 뜻밖의 일"이라는 뜻입니다. |
로그(log) | 프로그램이 무엇을 했는지 차례로 남긴 기록입니다. 배의 속도를 통나무(log)로 재어 적던 항해 일지에서 온 말입니다. |
주석 달기(annotation) | 사진 속 물체에 상자를 그리고 이름을 붙여 정답을 만드는 일입니다. annotate 는 "설명을 덧붙이다"라는 뜻입니다. |
라벨(label) | 사진에 붙인 정답입니다. 객체 탐지에서는 상자 좌표와 클래스 이름입니다. label 은 "꼬리표"라는 뜻입니다. |
라벨링 도구(labeling tool) | 마우스로 상자를 그리고 이름을 고르면 주석 파일을 만들어 주는 프로그램입니다. |
클래스(class) | 탐지할 물체의 갈래입니다. 이 장에서는 bolt, nut, washer 세 가지입니다. 파이썬의 class 와 이름만 같습니다. |
클래스 번호(class id) | 클래스를 0, 1, 2 처럼 번호로 적은 것입니다. id 는 identifier(알아보는 표)의 줄임입니다. |
픽셀 좌표(pixel coordinates) | 그림의 왼쪽 위를 (0, 0) 으로 두고 칸 수로 센 자리입니다. 2장, 12장에서 쓴 좌표입니다. |
정규화 좌표(normalized coordinates) | 픽셀 좌표를 그림의 가로나 세로로 나눠 0~1 사이의 비율로 바꾼 좌표입니다. normal 은 "기준에 맞춘"이라는 뜻입니다. |
YOLO 형식(YOLO format) | 한 줄에 클래스번호 x중심 y중심 너비 높이 를 정규화 좌표로 적는 라벨 형식입니다. YOLO 는 You Only Look Once(한 번만 본다)의 줄임입니다. |
COCO(Common Objects in Context) | 상자를 (x, y, 너비, 높이) 픽셀 좌표로 적는 큰 탐지 데이터셋과 그 형식입니다. 이름은 "제자리에 놓인 흔한 물체들"이라는 뜻입니다. |
YAML(YAML Ain't Markup Language) | 이름: 값 꼴로 설정을 적는 글자 파일 형식입니다. 이름은 "YAML 은 마크업 언어가 아니다"라는 말장난입니다. |
학습용 데이터(train set) | 모델이 보고 배우는 데이터입니다. train 은 "훈련하다"라는 뜻입니다. |
검증용 데이터(validation set) | 학습에 쓰지 않고 남겨 두었다가 모델이 잘 배웠는지 재는 데이터입니다. validate 는 "확인하다"라는 뜻입니다. 줄여서 val 이라고 씁니다. |
잘린 물체(truncated object) | 그림 테두리에 걸려 일부만 찍힌 물체입니다. truncate 는 "끝을 잘라 내다"라는 뜻입니다. |
가려진 물체(occluded object) | 다른 물체에 일부가 가려진 물체입니다. occlude 는 "막다, 가리다"라는 뜻입니다. |
18장 · OpenCV 전처리와 YOLO 연계
| 용어 | 설명 |
|---|---|
사전학습 모델(pretrained model) | 큰 데이터셋으로 미리 학습시켜 둔 모델입니다. pre 는 "미리", trained 는 "훈련된"이라는 뜻입니다. |
전이 학습(transfer learning) | 미리 배운 모델을 새 일에 맞게 조금 더 가르치는 일입니다. transfer 는 "옮기다"라는 뜻으로, 배운 것을 새 일로 옮겨 쓴다는 말입니다. |
ultralytics | YOLO 를 몇 줄로 학습하고 쓰게 해 주는 파이썬 패키지이자 그것을 만든 회사의 이름입니다. |
AGPL-3.0 | ultralytics 의 라이선스입니다. GNU Affero General Public License 3판의 줄임으로, 이 코드를 고쳐 남에게 서비스하면 고친 코드도 공개해야 한다는 조건이 붙습니다. |
가중치(weights) | 모델이 배운 내용을 담은 숫자들입니다. yolo11n.pt 같은 파일로 저장합니다. weight 는 "무게"라는 뜻으로, 입력마다 얼마나 무겁게 볼지를 정하는 수라서 붙은 이름입니다. |
yolo11n | ultralytics 의 YOLO11 가운데 가장 작은 판입니다. n 은 nano(아주 작은)의 머리글자입니다. |
COCO 데이터셋(Common Objects in Context) | 사람, 자동차, 사과 같은 일상 물체 80가지에 상자를 단 큰 데이터셋입니다. 17장에서 상자 형식 이름으로 만났습니다. |
추론(inference) | 학습을 마친 모델에 새 사진을 넣어 답을 얻는 일입니다. infer 는 "미루어 짐작하다"라는 뜻입니다. |
학습(training) | 정답이 붙은 사진을 보여 주며 모델의 가중치를 고치는 일입니다. |
에포크(epoch) | 학습용 사진 전체를 한 바퀴 다 보는 것입니다. 문제집을 처음부터 끝까지 한 번 푸는 것과 같습니다. epoch 는 "한 시대, 한 단락"이라는 뜻입니다. |
배치(batch) | 한 번에 묶어 보는 사진 수입니다. 17장의 일괄 처리(batch processing)와 같은 낱말로 "한 묶음"이라는 뜻입니다. |
imgsz(image size) | 학습과 추론 때 사진을 맞추는 크기입니다. 320 이면 긴 쪽을 320 칸에 맞춥니다. |
손실(loss) | 모델의 답이 정답에서 얼마나 틀렸는지 나타내는 점수입니다. 작을수록 좋습니다. loss 는 "잃음, 손해"라는 뜻입니다. |
과적합(overfitting) | 학습용 사진을 외우다시피 해서 처음 보는 사진에서는 오히려 못하는 일입니다. over 는 "지나치게", fit 은 "맞추다"라는 뜻입니다. |
신뢰도(confidence) | 모델이 찾은 상자마다 붙이는 "얼마나 자신 있나"의 값입니다. 0 에서 1 사이이고, 줄여서 conf 라고 씁니다. |
신뢰도 기준값(confidence threshold) | 이 값보다 신뢰도가 낮은 상자는 버리는 기준입니다. threshold 는 8장의 임계값과 같은 낱말입니다. |
IoU(Intersection over Union) | 두 상자가 겹친 넓이를 합친 넓이로 나눈 값입니다. intersection 은 "교차, 겹친 부분", union 은 "합침"이라는 뜻입니다. |
맞힌 것(true positive) | 정답 상자와 IoU 0.5 이상 겹치고 클래스도 같은 찾은 상자입니다. TP 라고 줄여 씁니다. |
헛것(false positive) | 짝이 되는 정답이 없는 찾은 상자입니다. 없는 것을 있다고 한 것으로, FP 라고 줄여 씁니다. |
놓친 것(false negative) | 짝이 되는 찾은 상자가 없는 정답입니다. 있는 것을 없다고 한 것으로, FN 이라고 줄여 씁니다. |
조건 차이(domain shift) | 학습 때 본 사진과 실제로 쓸 때 들어오는 사진의 밝기, 잡음 같은 조건이 다른 것입니다. domain 은 "영역", shift 는 "옮겨 감"이라는 뜻입니다. |
대조 실험(controlled experiment) | 다른 것은 모두 그대로 두고 한 가지만 바꿔 그 효과를 재는 실험입니다. control 은 "통제하다"라는 뜻입니다. |
CPU(Central Processing Unit) | 컴퓨터의 중앙 처리 장치입니다. 이 장의 학습과 추론은 그래픽 카드(GPU, Graphics Processing Unit) 없이 CPU 로만 합니다. |
19장 · Vision 데이터 파이프라인
| 용어 | 설명 |
|---|---|
파이프라인(pipeline) | 여러 처리 단계를 차례로 이어, 앞 단계의 출력이 다음 단계의 입력이 되게 만든 흐름입니다. 물을 차례로 흘려보내는 관(pipe)에서 온 말입니다. 1장에서 처음 보았습니다. |
단계(stage) | 파이프라인을 이루는 칸 하나입니다. stage 는 "무대, 한 과정"이라는 뜻입니다. |
입출력 약속(interface) | 단계가 무엇을 받아 무엇을 돌려주는지 정한 약속입니다. inter(사이)와 face(얼굴)를 붙인 말로, 두 부분이 맞닿는 면이라는 뜻입니다. |
수집(collection) | 폴더나 동영상에서 처리할 그림을 모으는 단계입니다. collect 는 "모으다"라는 뜻입니다. |
출처(source) | 그림이 어디서 왔는지 적은 정보입니다. 파일 경로나 "동영상 이름#프레임 번호" 처럼 적습니다. source 는 "샘, 근원"이라는 뜻입니다. |
거르기(filtering) | 쓸 수 없는 그림을 빼는 단계입니다. filter 는 "거름망"이라는 뜻입니다. 16장의 데이터 정제를 파이프라인의 한 칸으로 넣은 것입니다. |
전처리(preprocessing) | 모델에 넣기 전에 그림의 크기, 밝기, 잡음을 맞추는 일입니다. 이 장에서는 "다듬기" 단계라고 부릅니다. pre 는 "미리"라는 뜻입니다. |
추론(inference) | 학습을 마친 모델에 새 그림을 넣어 답을 얻는 일입니다. infer 는 "미루어 짐작하다"라는 뜻입니다. |
가중치 파일(weights file) | 학습으로 정해진 모델 속 숫자를 담은 파일입니다. 18장에서 만든 best.pt 가 그것입니다. pt 는 PyTorch 의 줄임입니다. |
신뢰도(confidence) | 모델이 상자 하나에 붙이는 "얼마나 확신하는지" 점수입니다. 0~1 사이이고, 줄여서 conf 라고 씁니다. |
IoU(Intersection over Union) | 두 상자가 겹친 넓이를 합친 넓이로 나눈 값입니다. intersection 은 "교차, 겹친 곳", union 은 "합친 것"이라는 뜻입니다. 18장에서 보았습니다. |
정밀도(precision) | 모델이 찾은 상자 가운데 맞은 상자의 비율입니다. 11장에서 경계 점수로 처음 보았습니다. |
재현율(recall) | 실제 물체 가운데 모델이 찾아낸 물체의 비율입니다. recall 은 "되불러 내다"라는 뜻입니다. |
설정(configuration) | 기준값처럼 바꿀 수 있는 값을 모아 둔 것입니다. 이 장에서는 CONFIG 라는 사전 하나에 모읍니다. configure 는 "짜 맞추다"라는 뜻입니다. |
하드코딩(hard coding) | 바꿀 수 있는 값을 코드 곳곳에 숫자로 직접 박아 넣는 일입니다. hard 는 "단단히 굳은"이라는 뜻으로, 나중에 바꾸기 어렵다는 말입니다. |
JSON(JavaScript Object Notation) | {"이름": 값} 꼴로 자료를 적는 글자 파일 형식입니다. 자바스크립트의 사전 적는 법에서 왔고, 파이썬 사전과 생김새가 거의 같습니다. |
처리 기록(log) | 파일마다 어느 단계에서 어떤 결과가 났는지 남긴 표입니다. 17장에서 본 로그입니다. |
재현성(reproducibility) | 같은 입력과 같은 설정으로 다시 돌리면 같은 결과가 나오는 성질입니다. reproduce 는 "다시 만들어 내다"라는 뜻입니다. |
깔때기 표(funnel table) | 단계를 지날 때마다 남은 개수가 줄어드는 모양을 보인 표입니다. 위가 넓고 아래가 좁은 깔때기(funnel)를 닮아 붙은 이름입니다. |
잡음 점수(noise score) | 이 장에서 쓰는 잡음의 크기입니다. 흑백 그림과 3×3 미디언 블러(7장)를 건 그림의 차이를 평균 낸 값으로, 클수록 자글자글합니다. |
프레임 뽑기(frame sampling) | 동영상의 모든 장 대신 N장마다 한 장씩 골라 쓰는 일입니다. sample 은 "본보기로 떼어 낸 것"이라는 뜻입니다. 15장에서 보았습니다. |
병목(bottleneck) | 파이프라인에서 가장 오래 걸려 전체 속도를 정하는 단계입니다. 병의 좁은 목처럼 흐름이 막히는 곳이라는 뜻입니다. |
체크리스트(checklist) | 빠뜨리지 않도록 확인할 항목을 적은 목록입니다. check(확인)와 list(목록)를 붙인 말입니다. |
20장 · 교육 콘텐츠 설계와 종합 실습
| 용어 | 설명 |
|---|---|
교육 콘텐츠(educational content) | 수업에 쓰는 자료 전체입니다. 설명 글, 실습 코드, 연습 그림, 정답, 채점 기준이 모두 들어갑니다. content 는 "담긴 것, 내용물"이라는 뜻입니다. |
학습목표(learning objective) | 수업이 끝났을 때 수강생이 할 수 있게 될 일을 적은 문장입니다. objective 는 "겨냥하는 것, 목표"라는 뜻입니다. |
행동 동사(action verb) | "만든다, 찾는다, 견준다"처럼 눈으로 확인할 수 있는 동작을 나타내는 동사입니다. "이해한다, 안다"는 밖에서 보이지 않아 학습목표에 덜 알맞습니다. |
실습 예제(exercise) | 수강생이 직접 코드를 돌려 보는 작은 과제입니다. exercise 는 "연습, 훈련"이라는 뜻입니다. |
가상 데이터(synthetic data) | 실제로 찍거나 모으지 않고 코드로 만든 데이터입니다. synthetic 은 "합성한, 만들어 낸"이라는 뜻입니다. 이 교안의 그림은 모두 가상 데이터입니다. |
씨앗(seed) | 난수를 만드는 출발점 숫자입니다. 6장에서 처음 썼습니다. 같은 씨앗이면 누가 언제 돌려도 같은 그림이 나옵니다. |
재현성(reproducibility) | 같은 코드를 다시 돌리면 같은 결과가 나오는 성질입니다. reproduce 는 "다시 만들어 내다"라는 뜻입니다. |
매개변수(parameter) | 함수에 넘겨 결과를 바꾸는 값입니다. 이 장에서는 난이도를 바꾸는 "손잡이"로 씁니다. parameter 는 그리스어로 "곁에서 재는 것"이라는 뜻입니다. |
난이도(difficulty level) | 실습이 얼마나 어려운지의 정도입니다. 이 장에서는 쉬움, 보통, 어려움 세 판으로 나눕니다. |
정답 마스크(ground truth mask) | 물체가 있는 칸을 255, 없는 칸을 0 으로 칠한 정답 그림입니다. 8장의 영수증에서 처음 썼습니다. ground truth 는 "땅에서 직접 확인한 사실"이라는 뜻으로, 하늘에서 찍은 사진을 땅에서 확인하던 데서 온 말입니다. |
정답표(answer key) | 문제마다 정답을 적어 둔 표입니다. 12장의 answer.csv 가 그 예입니다. key 는 "풀이의 열쇠"라는 뜻입니다. |
자동 채점(auto grading) | 학생의 답을 프로그램이 정답과 견줘 점수를 매기는 일입니다. grade 는 "등급을 매기다"라는 뜻입니다. |
IoU(Intersection over Union) | 두 영역이 겹친 넓이를 두 영역을 합친 넓이로 나눈 값입니다. 1 이면 꼭 같고 0 이면 하나도 안 겹칩니다. intersection 은 "교차, 겹친 곳", union 은 "합친 것"이라는 뜻입니다. |
정확도(accuracy) | 전체 칸 가운데 정답과 같은 칸의 비율입니다. 8장의 "맞힌 칸 비율"과 같습니다. accuracy 는 "정확함"이라는 뜻입니다. |
피드백(feedback) | 결과를 보고 다음에 무엇을 고칠지 알려 주는 말입니다. feed(먹이다)와 back(되돌려)을 붙인 말로, 결과를 되돌려 준다는 뜻입니다. |
비계(scaffolding) | 어려운 과제를 작은 단계로 나눠 받쳐 주는 수업 방법입니다. scaffolding 은 건물을 지을 때 세우는 발판(비계)이라는 뜻입니다. |
채점 기준표(rubric) | 평가 항목, 항목마다의 기준, 점수를 적은 표입니다. rubric 은 라틴어로 "붉은 흙"이라는 뜻으로, 옛 책에서 제목과 지시를 붉은 글씨로 적던 데서 온 말입니다. |
README | 자료 묶음의 맨 위에 두는 안내 파일입니다. 이름은 영어로 "나를 먼저 읽어라(read me)"라는 뜻입니다. |
requirements.txt | 실행에 필요한 파이썬 패키지와 버전을 한 줄에 하나씩 적은 파일입니다. requirement 는 "필요한 것"이라는 뜻입니다. |
라이선스(license) | 남이 만든 코드나 데이터를 어떤 조건으로 쓸 수 있는지 적은 약속입니다. license 는 "허가"라는 뜻입니다. |
출처 표기(attribution) | 가져다 쓴 자료가 어디서 왔는지 밝혀 적는 일입니다. attribute 는 "~의 것으로 돌리다"라는 뜻입니다. |
학습지(worksheet) | 수강생에게 나눠 주는 문제 그림과 빈칸이 있는 종이입니다. work(일)와 sheet(종이 한 장)를 붙인 말입니다. |
체크리스트(checklist) | 빠뜨리지 않게 확인할 항목을 적은 목록입니다. check(확인하다)와 list(목록)를 붙인 말입니다. |
ZIP | 여러 파일을 한 파일로 묶고 크기를 줄이는 형식입니다. 이름은 영어로 "휙 하고 빠르게"라는 뜻의 낱말에서 따왔다고 알려져 있습니다. |
종합 실습(capstone project) | 과정에서 배운 것을 모두 모아 하나의 결과를 만드는 실습입니다. capstone 은 돌담이나 아치의 맨 위에 얹는 마지막 돌이라는 뜻입니다. |