02. 영상처리용 라이브러리 기본내용 "열혈강의 - 영상처리 프로그래밍"에서 작성된 영상처리용 기본 라이브러리에서, 꼭 알아야할 사항만 요약해 봤다. 1. CMyImage 클래스 영상 이미지는 CMyImage클래스로 표현된다. CMyImage에서 실제 이미지 데이터를 표현할 변수형은 Byte가 대표적이지만, 다른 변수형도 사용할 수 있도록 template.. 프로그래밍/영상처리 2017.10.08
01. 기본환경 구성 - 영상처리 프로그래밍을 위한 2000년 정도에 처음 영상처리 프로그래밍을 배울 때, 교수님은 Visual C++을 가지고 강의를 했었고, 나는 Java를 가지고 프로그래밍을 했다. (그 때 한참 Java에 빠져 있을 때여서, 모든 프로그래밍을 java로 했었다.) 이제 2017년에, Homomorphic Encryption 알고리즘으로 암호화된 상태의 지문 데이터에 .. 프로그래밍/영상처리 2017.10.08
gcc 주요 옵션 설명 -c 소스파일을 컴파일한다. 이 때 링킹은 하지 않는다. 컴파일 결과 .o 형태의 object파일이 생성된다. 이 때, object파일의 이름은 소스파일의 확장자가 .o로 바뀌는 형태 -o file 실행결과 file 이란 이름을 가진 생성됨. (컴파일해서 object파일을 만들 때이든, 실행파일인 exe파일을 만들 때이든 .. 프로그래밍/기타 2016.11.25
Make, Makefile 사용법 요약 Makefile에 대한 상세 정보는, 영문메뉴얼: http://www.gnu.org/software/make/manual/html_node/index.html#SEC_Contents 한글메뉴얼: http://korea.gnu.org/manual/4check/make-3.77/ko/make_1.html 기본구조 요약 ----------------------------------------------------------------------------------------------------- 구성 요소: Target, Dependency, Command, Comments.. 프로그래밍/기타 2016.11.23
[파고들기]-[하노이탑] 하노이탑 문제는 알고리즘계에 있어 고전에 속한다. 특히 재귀호출(Recursion)에 대해 공부할 때 빠지지않고 등장하는 단골 문제이다. 그러나, 실제로 하노이탑 문제 풀이를 깊숙히 이해하는 것은 그리 쉽지 않고, 응용된 문제들은 꽤 어렵다. 이 페이지에서는 기본문제부터 응용문제까지 .. 알고리즘/알고리즘 노트 2016.10.02
[코드모음]-기타 /* 에라토스 테네스의 체 */ int p[10001]; p[1] = 1; for (int i = 2; i <= 10000; i++) { if (p[i] == 0) { for (int j = i * i; j <= 10000; j += i) p[j] = 1; } } /* 멱승 구하기 */ long long power(long long a, int e){ long long y = 1; while (e){ if (e & 1) y *= a; //홀수이면 밑수를 한번 더 a *= a; e >>= 1; } return y; } /* GCd */ int gcd(int a, int.. 알고리즘/알고리즘 노트 2016.08.19
[코드모음] - 문자열 /* KMP */ 1)pi 테이블 만들기 pi[1] = 0; for (int i = 2; i <= M; i++) { pi[i] = pi[i - 1] + 1; while (true) { if (B[pi[i]] == B[i]) { //같으면, pi[i] = pi[i - 1] + 1 가 그대로 유지 break; } if (pi[i] == pi[pi[i - 1]] + 1) { //z=pi[pi[i-1]] + 1 로 표현하는게 핵심 pi[i] = 0; break; } pi[i] = pi[pi[i - 1]] + 1; //pi[i] = z } } 2)테이블 이용해서 문.. 알고리즘/알고리즘 노트 2016.08.19
[코드모음]-정렬, 자료구조 /* merge sort */ void merge(int s, int m, int e){ int i = s, j = m + 1; for (int k = s; k <= e; ++k) //왼쪽 a[i] 또는 오른쪽 a[j]임. //왼쪽의 경우는 i<=m 이면서 j>e 혹은 왼쪽게 오른쪽꺼보다 작은 경우. 나머지는 전부 오른쪽 buf[k] = (i <= m && (j>e || a[i] <= a[j])) ? a[i++] : a[j++]; } void merge_sort(int s, int e){ if (.. 알고리즘/알고리즘 노트 2016.08.19
[코드모음]-DP /* DP. 1로 만들기 – 3가지 연산(나누기3, 나누기2, 빼기1)이용 1 만들기 최소연산횟수 */ D[i]: 숫자 i에 대해서 최소 연산 횟수 D[i] = min(D[i-1]+1, (i%2==0) ? D[i/2], (i%3==0) ? D[i/3]) D[1]=1, D[2]=1, D[3]=1 /* DP. 피보나치 */ D[0] = 0 D[1] = 1 D[i] = D[n-2] + D[n-1] /* DP. 파스칼의 삼각형 */ D[i][j] = (j==0 || j==i) ? 1 : D[i-1][.. 알고리즘/알고리즘 노트 2016.08.19
[코드모음]-기하, /* 기하 Basic structure */ struct Point{ double x, y; Point(){} Point(double _x, double _y){ x = _x; y = _y; } Point operator + (const Point& rhs) const{ return Point(x+rhs.x, y+rhs.y); } Point operator - (const Point& rhs) const{ return Point(x - rhs.x, y - rhs.y); } bool operator < (const Point& rhs){ return (x != rhs.x) ? (x < rhs.x) : (y < rhs.y); } Point operato.. 알고리즘/알고리즘 노트 2016.08.19