이미지 처리 기초 복습
퀴즈
import cv2 as cv
import numpy as np
다음 작업을 이미지 처리와 컴퓨터 비전으로 구분한 것으로 가장 알맞은 것은?
- ○이미지 처리: 밝기 조정, 컴퓨터 비전: 부품의 불량 여부 판정
- ○이미지 처리: 부품 종류 분류, 컴퓨터 비전: 노이즈 제거
- ○이미지 처리: 문자 인식, 컴퓨터 비전: 이미지 크기 변경
- ○이미지 처리: 사람의 자세 추정, 컴퓨터 비전: 이미지 선명화
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.
다음 작업을 이미지 처리와 컴퓨터 비전으로 구분한 것으로 가장 알맞은 것은?
보정된 이미지를 만드는 작업과 이미지에서 범주·위치·텍스트 같은 의미를 찾는 작업을 구분해 보세요.
금속 부품 사진에서 흠집이 차지하는 영역을 픽셀 단위로 표시하려고 합니다. 가장 알맞은 컴퓨터 비전 과업은?
경계 상자보다 흠집의 정확한 모양을 따라 각 픽셀을 구분해야 합니다.
비트맵 이미지에서 픽셀 좌표의 원점과 좌표가 증가하는 방향으로 알맞은 것은?
이미지의 첫 픽셀은 왼쪽 위에 있고 행은 아래쪽으로 진행합니다.
Pillow의 Image.open()에 대한 설명으로 알맞은 것은?
Pillow에서는 이미지의 크기와 모드 등을 가진 전용 객체로 파일을 다룹니다.
PIL 이미지의 색상 모드가 RGB일 때 한 픽셀을 구성하는 채널은?
모드 이름의 세 글자가 채널 이름과 순서를 나타냅니다.
8비트 채널 하나가 표현하는 픽셀값의 범위와 값의 개수로 알맞은 것은?
8비트는 28개의 값을 표현하며 0부터 셉니다.
너비 640, 높이 420인 RGB 이미지가 있습니다. 픽셀마다 R, G, B 값 하나씩을 저장할 때 전체 채널 값의 개수는?
너비 × 높이로 픽셀 수를 구한 뒤 RGB 채널 수 3을 곱하세요.
OpenCV의 cv.imread()가 기본 설정으로 컬러 이미지 파일을 읽은 결과에 대한 설명으로 알맞은 것은?
OpenCV는 이미지 연산에 사용할 수 있는 배열을 반환하며 기본 채널 순서는 RGB와 다릅니다.
다음 코드를 실행한 결과와 축의 의미로 알맞은 것은?
before = cv.imread("before.png")
after = cv.imread("after.png")
after.shape # 배열 형태
NumPy 이미지 배열은 행, 열, 채널 순서이며 행은 높이에 해당합니다.
(420, 640, 3): 높이, 너비, 채널(640, 420, 3): 높이, 너비, 채널(420, 640, 3): 너비, 높이, 채널(3, 420, 640): 채널, 너비, 높이(420, 640, 3): 높이, 너비, 채널다음 코드를 실행한 결과로 알맞은 것은?
gray_read = cv.imread("after.png", cv.IMREAD_GRAYSCALE)
gray_read.shape # 배열 형태
그레이스케일 이미지는 별도의 채널 축이 없는 2차원 배열로 읽습니다.
(420, 640)(420, 640, 1)(420, 640, 3)(640, 420)(420, 640)OpenCV로 읽은 after를 PIL에서 자연스러운 색으로 표시하기 위한 변환은?
OpenCV의 기본 BGR 순서를 PIL이 사용하는 RGB 순서로 바꿉니다.
rgb = cv.cvtColor(after, cv.COLOR_BGR2RGB)rgb = cv.cvtColor(after, cv.COLOR_BGR2GRAY)rgb = cv.cvtColor(after, cv.COLOR_BGR2HSV)rgb = cv.cvtColor(after, cv.COLOR_HSV2BGR)rgb = cv.cvtColor(after, cv.COLOR_BGR2RGB)다음 코드를 실행하세요. hsv 배열의 H, S, V가 나타내는 값으로 알맞은 것은?
hsv = cv.cvtColor(after, cv.COLOR_BGR2HSV)
hsv[250, 500] # 한 픽셀의 HSV 값
HSV는 색의 종류와 선명한 정도, 밝기를 서로 분리해 표현합니다.
이미지 히스토그램에 대한 설명으로 알맞은 것은?
가로축은 픽셀값, 세로축은 해당 값을 가진 픽셀 수를 나타냅니다.
after의 파란색(B) 채널 히스토그램에서 B 값 218의 막대가 가장 높았습니다. 이 결과의 해석으로 알맞은 것은?
히스토그램에서 막대의 위치는 픽셀값, 막대의 높이는 그 값을 가진 픽셀 수입니다.
룩업 테이블(LUT)의 역할로 가장 알맞은 것은?
8비트 이미지에서는 0부터 255까지 각 입력값의 변환 결과를 표에 미리 저장할 수 있습니다.
255×(입력값/255)γ 방식의 감마 보정에서 γ>1이면 중간 밝기 영역은 어떻게 변하나요?
0과 1 사이의 값을 1보다 큰 거듭제곱으로 올리면 값이 작아집니다.
다음 코드를 실행하세요. red_mask에 대한 설명으로 알맞은 것은?
lower_red = np.array([0, 100, 100], dtype=np.uint8)
upper_red = np.array([10, 255, 255], dtype=np.uint8)
red_mask = cv.inRange(hsv, lower_red, upper_red)
cv.inRange()의 결과는 선택 여부를 0과 255로 나타내는 1채널 배열입니다.
red_mask를 after에 적용한 결과에 대한 설명으로 알맞은 것은?
마스크는 원본 픽셀을 통과시킬 위치와 제외할 위치를 구분합니다.
초록 배경 마스크 green_mask에서 초록 배경은 255, 피사체는 0입니다. 크로마키 합성 방법으로 알맞은 것은?
서로 겹치지 않는 배경 영역과 피사체 영역을 각각 보존한 뒤 합칩니다.
green_mask로 새 배경을 선택하고 반전 마스크로 피사체를 선택한 뒤 두 결과를 더한다green_mask로 피사체를 선택하고 반전 마스크로 새 배경을 선택한 뒤 두 결과를 더한다green_mask 하나로 피사체와 새 배경을 모두 선택한 뒤 두 결과를 더한다green_mask와 반전 마스크를 AND 연산한 결과를 원본에 적용한다green_mask로 새 배경을 선택하고 반전 마스크로 피사체를 선택한 뒤 두 결과를 더한다이진 이미지와 Thresholding에 대한 설명으로 알맞은 것은?
문턱값은 픽셀을 두 집단으로 나누는 기준이며 결과는 두 값으로 표현합니다.
Otsu Thresholding의 역할로 가장 알맞은 것은?
직접 문턱값을 정하는 대신 밝기 분포의 두 집단을 나누는 기준을 찾습니다.
다음 코드를 그대로 실행하고 Otsu 방식이 선택한 실제 문턱값을 입력하세요.
gray = cv.cvtColor(after, cv.COLOR_BGR2GRAY)
otsu_value, binary = cv.threshold(
gray,
0,
255,
cv.THRESH_BINARY_INV | cv.THRESH_OTSU,
)
otsu_value # 자동으로 선택된 문턱값
cv.threshold()가 반환한 첫 번째 값이 자동으로 선택된 문턱값입니다.
조명이 위치마다 달라 이미지 전체에 문턱값 하나를 적용했을 때 글자가 잘 분리되지 않습니다. 가장 알맞은 방법은?
각 픽셀 주변의 작은 영역마다 지역 문턱값을 계산하는 방법을 고르세요.
두 이미지가 완전히 같은지 확인하려고 다음 코드를 실행했습니다. 결과로 알맞은 것은?
np.array_equal(before, after)
after.png에는 before.png와 다른 물체가 있으며, 이 함수는 전체 비교 결과 하나를 반환합니다.
FalseTrue픽셀마다 비교한 불리언 배열NoneFalsedifference = cv.absdiff(before, after)에 대한 설명으로 알맞은 것은?
absolute difference는 각 위치에서 뺄셈 결과의 부호를 없앤 값입니다.