분류 전체보기
-
추적 (Tracking) 코드컴공지식/컴퓨터비전 2024. 10. 28. 22:27
마우스로 드래그하여 추적 영역을 설정한다.MeanShift / CamShift 적용된거다. #include #include using namespace std; using namespace cv; struct CallbackParam { Mat frame; Point pt1, pt2; Rect roi; bool drag = false; bool updated = false; }; void onMouse(int event, int x, int y, int flags, void* param) { CallbackParam *p = (CallbackParam *)param; if (event == EVENT_LBUTTONDOWN) { p->pt..
-
얼굴 인식 코드컴공지식/컴퓨터비전 2024. 10. 28. 22:20
OpenCV를 이용한 얼굴 인식 코드웹캠을 사용해서 실시간으로 얼굴을 인식해 준다. #include #include using namespace std; using namespace cv; int main() { CascadeClassifier face_classifier; Mat frame, grayframe; vector faces; VideoCapture cap(0); if (!cap.isOpened()) { cout return -1; } face_classifier.load("haarcascade_frontalface_alt.xml"); while (true) { cap >> fram..
-
Tracking(추적)이란?컴공지식/컴퓨터비전 2024. 10. 28. 20:43
추적은 특정 물체를 여러 프레임에 걸쳐 계속 추적하는 거다.예를 들어, 영상에서 한 번 선택한 얼굴이나 물체가 계속 어디로 움직이는지 찾아내는 거다.추적을 할 땐 ROI가 정해져 있다고 먼저 가정하고 시작한다. Mean Shift(평균 이동)에 대해 알아보자Mean Shift는 밀도 함수의 최대값(peak)을 찾는 방법이다.간단히 말해, 데이터가 가장 많이 몰려 있는 중심을 찾는 과정이다.이 알고리즘은 반복적(iterative) 방식으로 조금씩 이동하면서 밀도가 높은 곳을 향해 점점 더 가까이 가는 거다. Mean Shift가 어떻게 작동하나?초기 위치 설정먼저, 관심 영역(ROI)을 하나 선택한다. 그림에서 파란색 원이 그 역할을 하고 있다.원 안에는 여러 데이터 포인트(Features)가 있다...
-
Face Detection컴공지식/컴퓨터비전 2024. 10. 28. 20:21
Haar-like Feature가 얼굴 탐지를 위해 쓰인다.Haar-like Feature란 검은색 사각형과 흰색 사각형 안에 있는 픽셀 값들의 합의 차이를 계산하는 거다. 왜 이걸 쓰냐면 얼굴의 특징적인 부분을 탐지하기에 좋다. 예를 들어서눈은 밝은 이마 아래에 어둡게 보이는 경향이 있거, 코는 양옆보다 밝은 영역으로 탐지될 수 있다.그래서 검은색 사각형은 어두운 부분(눈 등), 흰색 사각형은 밝은 부분(이마 등)과 대응된다. Haar-like Feature의 특징은 검은 사각형 내부의 픽셀 합 - 흰 사각형 내부의 픽셀 합을 계산한다.이렇게 계산된 값이 얼굴 탐지에 중요한 특징 값이 되는 거다.그리고 아무 위치나 스케일에서 쓸 수 있다.이미지 안의 어디든, 크기가 커지든 작아지든 유연하게 탐지할 수 ..
-
객체 탐지 방법컴공지식/컴퓨터비전 2024. 10. 28. 19:59
크게 두 단계로 나뉜다.훈련(Training) 단계랑 테스트(Test) 단계 1. Training Stage (훈련 단계)데이터 수집: 먼저 객체 이미지랑 객체가 아닌 이미지(배경 이미지)를 아주 많이 모아야 한다. 예를 들어, 고양이 탐지 프로그램이라면 고양이 사진이랑 고양이 아닌 사진들을 모으는 거다.특징(feature) 추출: 이제 그 이미지들에서 객체를 대표할 수 있는 중요한 특징들을 뽑아야 한다. 예를 들어, 고양이 사진이라면 고양이의 귀 모양이나 털 패턴분류기(Classifier) 설계: 마지막으로 이 특징들을 바탕으로 객체를 구분할 수 있는 분류기를 설계한다. 혹은 특정 기준(Threshold)을 정해서, "이건 고양이다 vs 아니다"라고 판단할 수 있도록 훈련시킨다. 2. Test Stag..
-
재귀로 인해 추가된 코드 부분컴공지식/프로그래밍언어론 2024. 10. 27. 17:07
trait Expr case class Num(n: Int) extends Expr case class Add(lhs: Expr, rhs: Expr) extends Expr case class Sub(lhs: Expr, rhs: Expr) extends Expr case class Id(name: String) extends Expr case class Fun(param: Id, body: Expr) extends Expr case class App(funExpr: Expr, argExpr: Expr) extends Expr case class If0(testExpr: Expr, thenExpr: Expr, elseExpr: Expr) extends Expr case class Rec(fname: Id,..
-
에타 축약이란?컴공지식/프로그래밍언어론 2024. 10. 27. 16:25
에타 축약(η-reduction)은 함수의 본질적인 동작이 똑같다면, 굳이 복잡하게 표현할 필요 없다는 개념이다.두 함수가 같은 결과를 반환한다면, 그 함수들은 같은 함수로 볼 수 있다라는 아이디어다결국, 필요 없는 중간 단계를 줄여서 간단한 함수로 만드는 과정이 에타 축약이다.람다 계산법의 중요한 개념이다. η 축약의 기본 형식{fun {n} {e n}} ≡ e (단, n이 e 안에서 자유롭게 사용되지 않을 때) 즉, 함수가 인자 n을 받아서 그걸 그냥 함수 e에 넘겨주는 역할만 한다면,굳이 이렇게 복잡하게 쓸 필요 없이 e 자체로 축약할 수 있다.다음은 또다른 예제다.{fun {n} {{fun {x} x} n}} ≡ {fun {n} n} 이런식으로 축약이 가능하려면 인자가 내부에서 "자유..