V4 보충 블러와 에지
사진을 살짝 흐리게 만든 뒤 밝기가 크게 바뀌는 곳(에지)을 찾아 테두리만 남겨요. 시작하기의 첫 실습(웹캠 에지 검출)과 이어지는 보충 차시예요.
아직 틀만 있는 차시예요
이 차시는 차시 페이지의 틀을 보여 주는 견본이에요. 영상처리 실습실을 만드는 단계(Phase 2)에서 그림과 설명을 채워 완성해요.
학습목표
- 사진을 먼저 흐리게(블러) 하는 까닭을 설명할 수 있어요.
- 에지가 밝기가 크게 바뀌는 곳이라는 것을 알고, 코드로 찾을 수 있어요.
- 값을 바꿔 가며 결과가 어떻게 달라지는지 비교할 수 있어요.
왜 배울까
사람은 사진 속 물체를 테두리로 먼저 알아봐요. 컴퓨터도 에지에지 (Edge) 사진에서 밝기가 갑자기 크게 바뀌는 곳이에요. 물체의 테두리나 윤곽선이 여기에 해당해요.를 찾아 물체의 모양을 알아내요. 자율주행 자동차가 도로의 차선을 찾을 때도 이 방법을 써요.
그림 자리
원래 사진, 흐리게 한 사진, 에지만 남긴 사진을 나란히 보여 주는 그림이 들어갈 자리예요.
핵심 개념
블러: 흐리게 하기
블러는 픽셀픽셀 (Pixel) 디지털 사진을 이루는 가장 작은 네모 칸이에요. 칸마다 색과 밝기를 나타내는 숫자가 들어 있어요. 하나하나를 주변 픽셀과 섞어 사진을 흐리게 만드는 방법이에요. 흐리게 하면 작은 잡티(노이즈)가 줄어들어요.
에지: 밝기가 크게 바뀌는 곳
이웃한 픽셀끼리 밝기 차이가 큰 곳이 에지예요. 물체의 테두리가 보통 에지가 돼요.
코드의 cv2.Canny는 밝기 차이를 두 기준과 견줘요. 이렇게 나누는 기준값을 임계값임계값 (Threshold) 값을 둘로 나누는 기준이 되는 값이에요. 기준보다 크면 한쪽, 크지 않으면 다른 쪽으로 나눠요.이라고 해요. 밝기 차이가 위 기준(high)보다 크면 에지로 정하고, 아래 기준(low)보다 작으면 버리고, 그 사이면 확실한 에지와 이어져 있을 때만 남겨요.
따라하기
실습실이 생기면 이 예제를 웹캠이나 샘플 이미지로 바로 실행해요. 지금은 코드를 한 줄씩 읽어 보세요.
# 보충 V4 틀 예제: 흐리게 한 뒤 테두리(에지) 찾기
# 영상처리 실습실(Phase 2)에서 웹캠이나 샘플 이미지로 실행해요.
# 줄 끝의 "# @slider 최소 최대 간격"은 실습실이 조절 막대로 바꿔 줘요(SPEC §6.1).
import cv2
# 흐리게 하는 정도: 홀수만 쓸 수 있어서 1부터 2씩 늘려요.
blur_size = 5 # @slider 1 31 2
# 테두리로 볼 밝기 차이의 아래 기준과 위 기준
low = 50 # @slider 0 255 1
high = 150 # @slider 0 255 1
cap = cv2.VideoCapture(0) # 0번 카메라(웹캠)를 열어요.
while True:
ok, frame = cap.read() # 사진 한 장(프레임)을 읽어요.
if not ok: # 읽지 못하면 반복을 끝내요.
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 흑백으로 바꿔요.
blurred = cv2.GaussianBlur(gray, (blur_size, blur_size), 0) # 흐리게 해요.
edges = cv2.Canny(blurred, low, high) # 밝기가 크게 바뀌는 곳을 찾아요.
cv2.imshow("edges", edges) # 결과를 화면에 보여 줘요.
if cv2.waitKey(1) & 0xFF == ord("q"): # q 키를 누르면 끝내요.
break
cap.release() # 카메라를 닫아요.
cv2.destroyAllWindows() # 창을 모두 닫아요.실습실은 아직 만들고 있어요. 지금은 코드를 한 줄씩 읽어 보고, 실습실이 생기면 이 자리에서 바로 실행해요.
왜 이런 결과가 나올까?
흑백으로 바꾸면 색 대신 밝기만 남아서 밝기 차이를 재기 쉬워요. 흐리게 한 다음 테두리를 찾으면 작은 잡티는 사라지고 물체의 테두리가 남아요.
확인해 보세요
- 화면에 검은 바탕과 흰 테두리 선이 보여요.
- 손을 움직이면 테두리 선도 따라 움직여요.
바꿔보기
바꿔 보기
blur_size를 1과 21로 바꿔 보세요. 찾은 테두리가 많아지나요, 줄어드나요?low와high를 모두 낮춰 보세요(예: 20과 60). 새로 테두리로 잡히는 곳은 어디인가요?cv2.Canny(blurred, low, high)의blurred를gray로 바꿔, 흐리게 하지 않고 테두리를 찾아 보세요. 결과가 어떻게 달라지나요?
도전 과제
도전 과제: 테두리를 굵게 보이기
찾은 테두리 선이 가늘어서 잘 보이지 않아요. 선을 굵게 만들어 화면에 보여 주세요.
힌트 보기
cv2.dilate(edges, None)은 흰 부분을 한 겹씩 넓혀요. 그 결과를 cv2.imshow로 보여 주세요.
확인 퀴즈
세 문제로 확인해 보세요.
보기를 고르고 [답 확인하기]를 눌러요. 키보드로는 방향키로 보기를 고르고 Tab으로 단추에 가요.
정답: ① 이웃한 픽셀끼리 밝기가 크게 바뀌는 곳
에지는 물체의 테두리처럼 밝기가 갑자기 크게 바뀌는 곳이에요. 사진의 네 가장자리를 뜻하는 말이 아니에요.
정답과 풀이 보기
정답: ① 이웃한 픽셀끼리 밝기가 크게 바뀌는 곳
에지는 물체의 테두리처럼 밝기가 갑자기 크게 바뀌는 곳이에요. 사진의 네 가장자리를 뜻하는 말이 아니에요.
정답: ① 작은 잡티까지 테두리로 잘못 찾지 않게 하려고
흐리게 하면 작은 잡티(노이즈)의 밝기 차이가 줄어요. 그래서 진짜 물체의 테두리가 더 잘 남아요.
정답과 풀이 보기
정답: ① 작은 잡티까지 테두리로 잘못 찾지 않게 하려고
흐리게 하면 작은 잡티(노이즈)의 밝기 차이가 줄어요. 그래서 진짜 물체의 테두리가 더 잘 남아요.
정답: ① 더 많이 흐려져서 찾는 테두리가 줄어요.
흐리게 하는 범위가 넓어지면 밝기 변화가 부드러워져요. 그래서 약한 테두리는 사라지고 뚜렷한 테두리만 남아요.
정답과 풀이 보기
정답: ① 더 많이 흐려져서 찾는 테두리가 줄어요.
흐리게 하는 범위가 넓어지면 밝기 변화가 부드러워져요. 그래서 약한 테두리는 사라지고 뚜렷한 테두리만 남아요.
교사용
교사용 안내
지도안 요약(틀)
- 시작하기의 첫 실습(웹캠 에지 검출)과 같은 예제를 써요. 흐름과 시간 배분은 영상처리 실습실을 만든 뒤(Phase 2) 정해요.
평가 포인트
- 블러를 먼저 하는 까닭을 잡티(노이즈)와 연결해 설명하는가?
blur_size,low,high를 바꾼 결과를 비교해 말할 수 있는가?
자주 막히는 곳
blur_size에 짝수를 넣으면 오류가 나요. 가우시안 블러의 크기는 홀수만 되기 때문이에요(조절 막대가 2씩 늘어나는 까닭).- 에지를 “사진의 네 가장자리”로 오해해요. 밝기 변화가 큰 곳이라는 뜻을 짚어 주세요.
원고와 자료
- 교과서에 없는 보충 차시라 사이트가 새로 써요. 성취기준은 억지로 붙이지 않았어요. 과목 교육과정이 영상 처리 함수 사용법 교육이 수업의 중심이 되지 않도록 하라고 안내하기 때문이에요.