일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CPP
- 그래픽스
- 신경망
- Unsupervised learning
- OpenGL
- 머신러닝
- neural network
- 인공지능
- Computer Vision
- 추천 시스템
- C++
- Support Vector Machine
- Kaggle
- 딥러닝
- 컴퓨터 비전
- 백준
- SGD
- 비용함수
- cs231n
- CNN
- 컴퓨터 그래픽스
- recommender system
- pre-trained
- 파이썬
- SVM
- Regularization
- Vision
- petal to metal
- logistic regression
- 로지스틱 회귀
- Today
- Total
목록전체 글 (159)
kwan's note
순서: Phong lighting, light sources, fragment shader 구현 Phong Lighting 라이팅을 위해서는 물체와 광원의 상호작용(BRDF)에 대한 정확한 계산을 필요로 하는데 이를 rasterization graphics에서 정확하게 표현하는것에는 한계가 있다. 이에 따라 여러가지 lighting 모델들이 존재하는데 그중에서 극단적으로 단순화 시키면서도 최소한의 퀄리티를 보이는 lighting model이 바로 phong 모델이다. phong model은 물체를 표현하는 색상을 네가지로 나누어 계산하는데 1. ambient light 2. diffuse light 3. specular light 이다. 여기에 빛을 발산하는 경우에 더해지는 4. emissive ligh..
메모리 기본 작동과정 int i = 7; 위와같은 변수 i는 스택에 저장되고 아래와 같은 변수 ptr가 가르키는 값은 힙에 저장된다. 스택에 할당된 변수는 scope를 벗어나면 자동으로 해제가 되는 반면 힙에 저장된 변수는 해제시켜주어야 한다. int* ptr = new int; 물론 이때 ptr은 스택에 저장된다. 포인터 역시 변수의 일종이기 때문이다. malloc free -> new delete c에선 malloc 을 통해 메모리를 할당하였다. 여전히 c++에서도 malloc을 사용할 수 있음에도 거의 동일한 작업을 하는 new 가 생긴 이유에 대해서 궁금할 수 있을텐데 가장 큰 차이는 사용성에 있다고 볼 수 있다. malloc은 힙영영에 메모리를 따로 빼놓을뿐 어떠한 객체에 이용되는지 알 지 못한..
matrix library로 코드는 맨 아래 깃헙 링크에 공개 하였습니다. 행렬 연산을 위한 cpp 라이브러리 입니다. 먼저 constructor는 다음과 같습니다. KwanMat::KwanMat(const int rows, const int cols, float matrices[]) : numRows(rows), numCols(cols) { matNums = new float[numRows * numCols]; if (matrices == 0) { for (unsigned int i = 0; i < numRows * numCols; i++) matNums[i] = 0; } else { for (unsigned int i = 0; i < numRows * numCols; i++) matNums[i] = ..
먼저 map을 1부터 nxn까지 만들고 말그대로 돌리면 된다. 복잡할 수 있지만 시키는 대로 하면 되는 구현 문제. #include #include using namespace std; vector map; vector qMap; vector solution(int rows, int columns, vector queries) { vector answer; int queries_row_len = queries.size(); for (int i = 0; i < rows; i++) { vector theRows; for (int j = 1; j < columns + 1; j++) { theRows.push_back(i * columns + j); } map.push_back(theRows); } for (i..
cpp를 이용해 간단한 토이 프로젝트를 진행하였습니다. 추가적인 파일이나 라이브러리 추가 없이 빈 파일에서 커맨드라인에서 실행되는 테트리스를 구현하는것을 목표로 하였습니다. 콘솔창에서 구동되는 실행 화면은 다음과 같습니다. 게임 종료 화면은 다음과 같습니다 먼저 main.cpp 에서는 다음과 같이 Game header를 포함하고 이름을 받아와 해당 아이디로 게임을 실행합니다. #include "Game.h" int main() { std::cout name; Application game(name); game.Run(); } Game.h에서는 application을 선언하고 게임 플레이에 필요한 함수를 application.cpp에서 구현하였다. 이때 블록에 관한 정보는 block.h에 정의하였습니다. ..
opengl super bible 6판을 읽고 작성하였습니다. opengl에서 uniform은 vertex별로 다른 값을 갖는 attribute와 다르게 전체 primitive에게 동일하게 적용되는 속성을 말한다. shader에서는 이러한 변수 선언시 uniform변수를 넣는것으로 선언이 가능하다. vertex shader에서 uniform의 값을 바꾸는것은 불가능하지만 선언은 할 수 있다. 그렇다면 이런 uniform은 언제 사용될까? 가장 일반적인 사용처는 변환행렬이 될 것이다. 하나의 모델에게 공통적으로 적용되는 값이기 때문이다. 즉 model view projection matrix가 이러한 uniform으로 선언된 변수를 통해 전달된다. c++프로그램 내에서 uniform은 glUniform*을..
문제 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대학교가 자신과 맞는가에 대한 고민을 항상 해왔다. 중앙대학교와 자신의 길이 맞지 않다고 생각한 JH 교수님은 결국 중앙대학교를 떠나기로 결정하였다. 떠나기 전까지도 제자들을 생각하셨던 JH 교수님은 재귀함수가 무엇인지 물어보는 학생들을 위한 작은 선물로 자동 응답 챗봇을 준비하기로 했다. JH 교수님이 만들 챗봇의 응답을 출력하는 프로그램을 만들어보자. 입력 교수님이 출력을 원하는 재귀 횟수 N(1 ≤ N ≤ 50)이 주어진다. 출력 출력 예시를 보고 재귀 횟수에 따른 챗봇의 응답을 출력한다. 예제 입력 1 복사 2 예..
opengl 데이터는 버퍼를 통해서 저장을 한다. 그중에서도 vertex에 대한 정보 저장을 이해하기 위해서는 vao와 vbo가 어떻게 만들어지고 사용하는지 이해해야 한다. 이런 데이터는 cpu가 아닌 gpu의 vram에 저장되어 병렬처리하므로 빠르게 화면에 랜더링할 수 있다. VAO (Vertex array object),VBO(vertex buffer object)에 대해서 살펴보면 VBO는 그래픽카드의 vram에 저장되는 데이터로 하나의 vertex들에 대한 정보들이 들어간다. 예를들어 vertex의 위치, vertex의 색상, vertex의 normal정보등이 이러한 vbo에 해당한다. VAO는 여러개의 VBO를 담을 수 있다. 즉, 어떠한 오브젝트에 대한 정보를 저장하는데 사용된다. VBO에 저..