본문 바로가기

Computer Vision

Ⅱ. 영상 처리 기법 (1. 영상의 밝기 조절) 화소 처리(Point Processing) = 입력 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 해당 좌표 픽셀 값으로 설정하는 연산. 화소 처리는 특정 좌표의 값을 바꾸는 연산이므로 함수로 표현할 수 있습니다. 다양한 변환 함수 f(x)가 존재하며 예를 들면 다음과 같습니다. f1 = 입력된 픽셀값이 변함없이 동일한 픽셀값으로 출력되는 함수. (항등 함수) f2 = 입력된 픽셀값보다 밝은 픽셀값으로 출력되는 함수. f3 = 입력된 픽셀값이 특정 값 이하이면 0, 특정 값 이상이면 255로 출력하는 함수. (이진 함수) 화소값을 변화시키는 변환 함수는 0~255 사각형 범위 안에 존재해야 하며 반전, 밝기 조절, 명암비 조절 등의 효과를 구현할 수 있습니다. 밝기 조절(Brightness Contr.. 더보기
Ⅰ. 컴퓨터 비전 기초 (8. 트랙바와 연산 시간 측정) 트랙바(Trackbar) = 프로그램 동작 중 사용자가 지정한 범위 안의 값을 선택할 수 있는 컨트롤러. 트랙바는 OpenCV에서 제공하는 거의 유일한 그래픽 사용자 인터페이스입니다. 8-(1) 트랙바를 이용한 밝기 조절 Import Library import numpy as np import cv2 Create Trackbar Gnerating Function def on_level_change(pos): value = pos * 16 if value >= 255: value = 255 img[:] = value cv2.imshow('image', img) 나중에 만들어질 트랙바의 값 위치가 달라질 때마다 호출되는 on_level_change() 콜백 함수를 정의합니다. on_level_change().. 더보기
Ⅰ. 컴퓨터 비전 기초 (7. 입력 장치 이벤트) 영상을 처리할 때 키보드나 마우스 등과 같은 입력 장치를 이용하여 특정 영상 처리 동작을 수행할 수 있습니다. 예를 들어 특정 키보드 키를 누르면 영상이 반전된다던지 마우스의 왼쪽 클릭을 하면 클릭한 영상 속 위치의 좌표를 알려주는 등 OpneCV에서 제공하는 다양한 함수들을 이용하여 해당 기능을 구현할 수 있습니다. 7-(1) 키보드 이벤트 처리하기 키보드 이벤트는 키보드의 특정 키를 누르는 것을 뜻하며 OpenCV의 waitKey() 함수를 이용하여 키보드의 특정 키를 눌렀을 때 특정 동작을 수행할 수 있도록 만들 수 있습니다. Upload File from google.colab import files upload = files.upload() Saving cat.bmp to cat.bmp Impo.. 더보기
Ⅰ. 컴퓨터 비전 기초 (6. 동영상이란?) 동영상(Video) = 영상을 연속적으로 재생하여 마치 움직이는 것처럼 보이는 영상들. 프레임(Frame) = 동영상 속 하나의 영상. 프레임율(Frame Rate)[fps] = 1초 동안 재생되는 프레임수. # FPS(Frame Per Second) = 프레임율 단위. # 일반적으로 15~60 fps를 사용하고, 보통 사람 눈에는 25~30 fps정도면 부드럽게 느껴집니다. 프레임율이 높아지면 높은 수준의 동영상을 볼 수 있지만 용량이 커집니다. 이 때문에 코덱이라는 프로그램을 이용해서 압축을 하게 됩니다. 6-(1) 카메라 처리 예제 Create VideoCapture Object import sys import cv2 cap = cv2.VideoCapture() cap : 카메라 및 동영상을 처리하.. 더보기
Ⅰ. 컴퓨터 비전 기초 (5. 마스크 연산과 ROI) 마스크 영상(Mask Image) = 영상의 특정 관심 영역(ROI)과 아닌 영역을 나눈 영상. # 관심 영역(ROI : Region of Interest)이란 영상에서 특정 연산을 수행하고자 하는 임의의 부분 영역을 말합니다. # 보통 마스크 영상은 0 or 255로 구성된 이진 영상(Binary image)를 사용합니다. # 마스크 영상은 cv2.CV_8UC1 타입의 흑백 영상입니다. 마스크 연산(Mask Calculation) = 마스크 영상을 처리하는 영상. # OpenCV는 일부 함수에 대해 ROI 연산을 지원함. 이때 마스크 영상을 인자로 함께 전달해야 합니다. (ex. cv2.copy, cv2.calcHist, cv2.bitwise_or, cv2.matchTemplate…) # 마스크 영상의.. 더보기
Ⅰ. 컴퓨터 비전 기초 (4. 영상의 생성, 복사, 추출) 4-(1) 영상 생성 영상 데이터는 Numpy의 array로 표현되므로 array를 생성하는 것과 동일합니다. Import Library import cv2 import numpy as np from google.colab.patches import cv2_imshow 필요한 라이브러리들을 불러옵니다. Create Numpy Array img1 = np.empty((480, 640), dtype=np.uint8) img2 = np.zeros((480, 640, 3), dtype=np.uint8) img3 = np.ones((480, 640), dtype=np.uint8) * 100 img4 = np.full((480, 640, 3), (0, 255, 255), dtype=np.uint8) img1 : 모.. 더보기
Ⅰ. 컴퓨터 비전 기초 (3. 영상의 속성) 3-(1) 영상의 여러 가지 속성 영상 데이터는 수의 나열인 텐서라는 수학적 개념으로 표현한다고 했습니다. 그래서 텐서를 다루기 위한 Numpy 라이브러리를 사용하며 영상 데이터는 Numpy의 array라는 형태로 표현되고 다뤄집니다. 다음의 예를 통해 영상 데이터의 속성을 살펴보겠습니다. import cv2 img1 = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSALE) img2 = cv2.imread('cat.bmp', cv2.IMREAD_COLOR) img1과 img2는 numpy.ndarray 입니다. ndim : 차원수, len(img.shape)과 같음. shape : 각 차원의 크기. 흑백 영상(h,w) 또는 컬러 영상(h,w,3) size : 전체 원소 개수 dty.. 더보기
Ⅰ. 컴퓨터 비전 기초 (2. 영상이란?) 영상(Image) = 픽셀이 바둑판 모양의 격자에 나열되어 있는 형태인 데이터. 픽셀(Pixel : Picture Element)은 화소라고도 하며 영상을 이루는 가장 기본적인 단위입니다. 여기에서 영상은 하나의 이미지를 뜻하며 여러 영상을 연속적으로 재생하는 것을 동영상이라고 합니다. 2-(1) 영상의 표현 방법 영상은 여러 픽셀의 집합으로 이루어져 있습니다. 이 픽셀에 담겨있는 정보는 '수'를 이용하여 나타내고 픽셀의 집합인 영상은 '수'의 나열로 표현할 수 있습니다. 그래서 이를 표현하기 위한 적절한 수학적 개념인 텐서(Tensor)를 이용하여 영상을 표현하게 됩니다. 상황에 따라서 표현하고자 하는 영상의 정보 종류수는 다양하므로 상황에 따라서 영상의 텐서 차원은 달라지게 됩니다. 기본적인 영상과 .. 더보기