목록전체 글 (99)
juuuding
영상 획득과 표현 사람의 눈과 마찬가지로 카메라는 물체에서 반사된 빛이 카메라의 작은 구멍에 들어가 뒷면에 있는 영상 평면에 맺히면서 영상을 얻게 되는 것이다. 이 영상 평면은 사람의 경우 망막, 필름 카메라의 경우 필름, 디지털 카메라의 경우 CCD 센서다. 이렇게 얻은 영상은 초기에 아날로그 신호이며, 영상을 메모리 공간에 저장하기 위해서는 아날로그 신호를 디지털 신호로 바꿔주어야 한다. 디지털 신호로 바꾸기 위해서는 샘플링, 양자화 이 두가지 과정이 필요하다. 먼저 샘플링은 2차원 영상 공간을 가로 N개, 세로 M개로 나눈다. 이렇게 나눠진 공간 중 한 점을 화소(pixel)이라고 하고, MxN을 영상의 크기 또는 해상도라고 한다. 다음으로는 이렇게 샘플링 된 영상을 양자화 해야한다. 양자화는 각 ..
Gradient Descent Implementation logistic regression model(f_w,b(x))에 새로운 x값을 입력하면 레이블이 1일 확률이 예측된다. linear regression과 마찬가지로 cost J를 최소화 할 수 있는 w와 b를 찾는 것이 중요한데, linear regression과 logistic regression은 모델부터 다르기 때문에 Gradient descent를 적용하는 식도 다르다. 우선 아래의 식을 cost가 최소가 되는 값을 찾을 때까지 계속해서 반복하는 것이 Gradient descent이다. 미분 값은 위의 식과 같이 표현할 수 있는데, 이러한 gradient descent 식만 보면 linear regression과 다를 게 없어 보인다. 하..
마우스가 이동한 궤적을 따라 페인팅하는 기능을 구현해보겠다. [붓 형태로 페인팅하기] 아래의 코드에서는 왼쪽 버튼을 클릭하면 파란색, 오른쪽 버튼을 클릭하면 빨간색으로 페인팅하는 결과가 나온다. 여기서 페인팅을 하는 원리는 연속적으로 원을 그리고 그 원의 내부를 채워 선처럼 보이게 하는 것이다. 따라서 cv.circle() 함수를 사용한다. 이 함수의 인수 값에는 영상, 원의 중심, 반지름, 색, 두께를 차례대로 입력한다. 두께에 -1을 입력하게 되면 원의 내부가 채워진다. [Code] import cv2 as cv import sys img=cv.imread("resource/son.jpg") if img is None: sys.exit("파일을 찾을 수 없습니다.") Brushsiz=5 LColor,..
저장되어 있는 이미지 파일에 도형을 그리고 글을 써서 표시해보겠다. openCV에서는 line, rectangle, polylines, circle, ellipse를 이용하여 순서대로 선, 직사각형, 다각형, 원, 타원을 그릴 수 있고, purText로 문자열을 작성할 수 있다. [영상에 도형 그리고 글 쓰기] 우선 영상 파일을 읽어준 후 retangle을 이용하여 직사각형을 그려준다. 인수 값으로는 도형을 그릴 파일 객체, 도형 시작 위치, 끝 위치, BGR 값, 선의 두께를 입력해주면 된다. 그 다음 purText로 글을 작성해주는데, 마찬가지로 파일 객체, 글 작성 위치, 폰트, 글자 크기, BGR 값, 글자 두께를 차례대로 인수 값에 전달하면 된다. [Code] ''' 영상에 도형 그리고 글씨 쓰..
웹 캠을 통해 입력되는 동영상을 윈도우에 디스플레이 해보겠다. [웹 캠에서 비디오 읽기] 먼저 VideoCapture()로 웹 캠과의 연결을 시도한다. 함수의 첫 번째 인수 값에는 웹 캠의 번호를 지정하고, 두 번째 인수 값에 CAP_DSHOW를 넣어주어 비디오가 바로 화면에 나타나게 해준다. 참고로 컴퓨터에 연결된 웹 캠이 하나라면 웹 캠의 번호를 0으로 입력하면 된다. 웹 캠과의 연결이 성공적이라면 결과 값은 isOpened로 반환된다. 이제 무한 루프를 이용하여 영상이 이어지며 계속 화면에 보이도록 설정해준다. read()를 호출한 순간의 프레임을 획득하여 imshow를 통해 화면에 디스플레이 해주고, 이것이 ms 단위로 반복되면서 영상이 이어서 송출된다. read의 반환 값으로는 프레임 획득 성공..
컴퓨터에서 컬러 영상 파일을 읽어와 흑백 영상으로 변환을 시킨 후, 영상의 크기를 원본 영상의 70%로 줄여보겠다. [영상을 명암 영상으로 변환하기] 먼저 imread로 영상을 불러온 후, cvtColor()로 컬러를 흑백으로 변경해준다. 여기서 첫 번째 인수 값에는 변환할 영상의 객체 이름을 입력해주고, 두 번째 인수 값에는 cv.COLOR_BGR2GRAY를 입력하여 컬러를 흑백으로 변환하라고 지시한다. 참고로 cvtColor 함수가 영상을 명암 영상으로 변경할 때는 아래의 식을 이용한다. I = round(0.299 * R + 0.587 * G + 0.114 * B) 위의 식을 가지고 BGR 3 채널의 값을 하나의 채널로 변경하여 명암 영상으로 변환하는 것이다. [영상 크기 축소하기] 이미지의 크기를..
[영상 파일 읽고 윈도우에 디스플레이 하기] 컴퓨터 폴더에 저장되어 있는 영상 파일을 읽고 윈도우에 디스플레이 해보겠다. 우선 openCV 기능을 사용하기 위하여 cv2 모듈을 import 해준다. imread()로 컴퓨터에 있는 파일을 읽어와주는데, 이때 파일 경로는 해당 코드 소스 파일이 저장되어 있는 폴도에 있어야 한다. 파일이 없거나 찾을 수 없다면 imread의 반환 값은 None이 된다. 그 후 읽어온 영상 파일을 imshow()를 이용하여 윈도우에 디스플레이해준다. 여기서 첫번째 인수는 윈도우의 이름이고, 두번째 인수는 읽어올 영상 파일이다. 다음으로 waitKey()를 가지고 해당 파일이 윈도우에 표시되는 시간을 지정해준다. 이 함수에 인자 값은 ms 단위의 시간을 입력해주면 되고, 인수를..
cost function은 특정 파라미터 집합(w,b)이 훈련 데이터에 얼마나 잘 맞는지 측정하는 방법을 제공한다. linear regression의 cost function이었던 squared error cost function은 logistic에 이상적인 cost function이 아니다. 따라서 이번 챕터에서는 logistic regression에 맞는 cost function에 대해 알아볼 것이다. 우선 아래는 linear regression에 잘 맞는 squared error cost이다. loss와 cost의 관계를 조금 더 명료하게 하기 위해 1/2m에서 1/2를 sigma 안으로 넘겨보면, cost는 training set들의 loss 평균이라고 말할 수 있다. 이것을 linear regr..