반응형
 

CUDA (Compute Unified Device Architecture)


general purposed gpu programming에 대해 알고 있는가?

알고 있다면, 이게 뭐하는 건지 전혀 설명할 필요가 없을 거다.


그렇다. gpgpu를 쉽게 하기 위해 만든 거니까.. 어디서? nvidia에서..

적절한 라이브러리들도 지원되고 에뮬레이션 모드도 동작하고.. 음..


뭐 그래도 단점이 있다면... 그래픽 카드도 8800 정도는 되야.. 예제가 다 돌아간다는 점 정도.. ㅡㅡ;

내껀 7950인데.. 예제 중에 20% 정도만 돌아간다. ㅡㅡ;


그래.. 그럼 이제 모르는 사람들을 위해서..

컴퓨터 뜯어보면 그래픽 카드가 다 보일것이다. 거기보면 gpu라는 프로세서가 달려있다.

이건 누구나 알겠지? 모른다면... 아마 프로그래밍이랑 관련없는 분이실테니.. 조밑에 수영관련 글이나 읽으시길..


그 gpu는 막강한 프로세서다. 일부 계산에 특화된... 그 계산에선 cpu를 능가할 정도의...

그래.. 그거다. 그 성능 좋은 녀석은 매일 풀로 일하는게 아니다. 적당히 놀고 있다.

3d 게임 같은거하면 거의 풀로 일하겠지만.. 익스플로어나 띄워놓고 지금처럼 블로그나 돌아다니는 수준에선 거의 논다.


그래서 사람들이 일 시키기로 결심을 했다. 노는 꼴을 어떻게 보냐..  나도 뼈빠지게 일하는데..

그래서 얘를 그래픽 작업 말고 다른 일을 시키기로 한거다.

그래서 얘가 잘하는 수학연산등을 시키는거다.

이게 gpgpu다..


그럼 cuda는?

gpgpu 프로그램을 작성하려면 귀찮은 준비 작업들이 필요하다.

계산할 input 데이터를 넣어줄 texture도 만들어야 하고.. output시에 pixel도 읽어야 하고..

거기에 좀 더 낫게 하려고 pingpong buffer니 뭐니.. 아.. 짜증난다.


그래서 이런거 할 필요없이 cuda로 짜라고 해서 nvidia가 던져 준거다.

이런 귀찮은 작업들이 라이브러리에 함수로 정리되어 있고 간단한 코드들은 다 함수로 제공된다.

그냥 짜면 된다.


아.. 세상은 날로 발전하고 있다... 올 여름엔 cuda랑 놀아볼까나..




반응형
반응형
 In  epipolar geometry,

Or : Optical Center Right

Ol : Optical Center Left

Pl : a point in the left image

Pr : a point in the right image


T = Or - Ol
Pr = R(Pl-T)


In Essential Matirx

Pr*E*Pl = 0;
E = TxR


In Fundamental Matirx

Pr'*F*Pl' = 0;


Relation in two matrices


K : intrinsic

U : epipolar line


 E = K.T * F * K
u = F * p
F = K.I.T * E * K.I
U = E * P
u = K.I.T * E * K.I * p




written by chamcham

reference : introductory Techniques for 3d computer vision




반응형
반응형
 

writer : chamcham
reference : Elementary Linear Algebra by ANTON


- 언제나 x가 0인 해를 가짐 : trivial solution

- Ax = y, A는 m(행, 식의 수) x n(열, 변수의 수) matrix

- m개의 A의 열들 중 서로 독립인 열의 수를 m' < m이라 하면, m' < n일 때, 즉 독립인 식의 수 < 변수의 수 일때만 nontrivial solution 을 가짐


Ax = b

- 일반적으로 homogeneous system(Ax=0)에서는 x=0 이라면 항상 해가 된다. 이 해를 trivial solution이라고 한다.

- Ax=0 이 nontrivial solution을 가질 필요충분조건은 A의 column이 linearly independent이기 때문이다. 또한 Ax=0 이 nontrivial solution을 가진다는 이야기는 동시에 수많은 해를 가진다는 이야기와 같다.

만일 A가 정사각행렬이고, nontrivial solution을 가진다면 A는 singular matrix가 된다.




반응형
반응형

Triangulation

writer : chamcham
reference : ENGIN TOLA's MS paper

Triangulation is finding M in 3d space.
it has many solution such as Mid-point, Linear Triangulation, Linear LM etc.

most useful method is Linear Triangulation. because it is very easy in implementation.

equation form is AM = 0
we just solve this linear equation using Pseudo-inverse or SVD.



반응형
반응형
 Stereo Vision

writer : chamcham
reference : Three Dimension Computer Vision..


Stereo Vision have two problem..
Given two images, We want to solve this problem.

the First is correspondence problem.
if point m1 in image plane 1 is given, decide which point m2 in image plane 2 it corresponds to.

the Second is recosntruction problem.
if point m1 and m2 are given, we compute the 3D coordinates of M in the world reference frame.




반응형
반응형

Outlier를 제거하는 알고리즘 중 하나...

( RANSAC's Algorithm )


Given: data - a set of observed data points
model - a model that can be fitted to data points
n - the minimum number of data values required to fit the model
k - the maximum number of iterations allowed in the algorithm
t - a threshold value for determining when a data point fits a model
d - the number of close data values required to assert that a model fits well to data
Return: bestfit - model parameters which best fit the data (or nil if no good model is found)


iterations = 0
bestfit = nil
besterr = something really large
while iterations < k
maybeinliers = n, randomly selected values from data
maybemodel = model parameters fitted to maybeinliers
alsoinliers = empty set
for every point in data not in maybeinliers
if point fits maybemodel with an error smaller than t
add point to alsoinliers
if the number of elements in alsoinliers is > d
% this implies that we may have found a good model now test how good it is
bettermodel = model parameters fitted to all points in maybeinliers and alsoinliers
thiserr = a measure of how well model fits these points
if thiserr < besterr
bestfit = bettermodel
besterr = thiserr
increment iterations
return bestfit


출처 : 인터넷 어딘가... 기억이 잘.. ㅡㅡ;




반응형
반응형

Camera Calibration.

카메라 보정을 한마디로 정의하자면,
intrinsic parameter와 extrinsic parameter를 구하는 것을 Camera Calibration 이라고 합니다.

extrinsic은 카메라 외부의 즉, 위치에 관한 파라미터이고,
intrisic은 카메라 자체 내부의 focal length나 optical center등에 관한 정보 입니다.


여러가지 방법으로 Calibration을 수행할 수 있지만, 그 중에서 가장 단순한 Direct Method의 경우,
intrinsic과 extirinsic을 Projection 매트릭스로부터 구해낼 수 있습니다.


Projection 매트릭스는 image좌표와 world 좌표 간의 매핑을 가능하게 해주는 매트릭스 입니다.
우선 우리는 두 좌표를 이용해서 projection 매트릭스를 구하고


P = K(R|T)

이므로.. 우린 P를 QR Decomposition함으로서 intrinsic과 extrinsic을 구할 수 있습니다.

이러한 방법을 Direct Method 라고 하고,
조금씩 다른 Tsai나 Zhang의 방법들 또한 존재하고 있습니다.


written by chamcham



반응형
반응형

(출처 : 지식인 poroly97 (2005-11-04 09:50 작성))


자료 찾다가... 의외로 지식인에도 이래저래 잘 적어놓은 글이 있길래..

중복해서 붙어있는거 보니... 어디서 긁은것 같긴하지만 뭐.. 여튼..


-----------------------------


I 프레임 - Infra Frame 의 약자로, 쉽게 말해 키 프레임 입니다. 이것은 JPEG 같은 방식으로 소스로부터 직접 압축되어 온 전체 그림이죠. 가장 화질도 좋지만 가장 용량도 큽니다.

P 프레임 - Previous 또는 Predicted Frame 이라 불리며, 이전에 나온 키 프레임의 정보를 바탕으로 구성된 프레임 입니다. 화질/용량 둘 다 중간급입니다.

B 프레임 - Bidirectional Frame 의 약자로, 전후의 I/P 프레임의 정보를 바탕으로 구성된 프레임 입니다. 화질/용량이 다 최하급입니다.

 


MPEG-1/2 인코딩에 대한 몇가지...

요즘 miniDVD 를 시작해 보려는 분들이 좀 계심에 따라, 제 생각에 이런것 관련에 의문이 생길수 있을듯한 사항에 대해 간단히 적어볼까 합니다. 처음 하시려는 분들은 일단 이런 저런 옵션들이 있지만 이것들이 어디에 어떻게 쓰이는지 알수가 없는 이유로 헷갈리시는 경우도 많죠.

일단은 제가 TMPGEnc 위주로 사용을 하므로, 다른 인코딩 프로그램들에 대한것은 뭐라 말씀드리기가 어렵군요.
하지만 MPEG 인코더들의 옵션은 거의 다 비슷비슷 하기 때문에 여기 적는것이 다른곳에도 응용될수 있을거라 생각하는 바입니다.


1. GOP (Group of Pictures)

이것은 MPEG-1/2 인코딩의 가장 기본으로, 키 프레임부터 다음 키 프레임까지의 프레임 모음을 뜻하는 겁니다.
프레임 타입에는 I, P, B 의 세가지가 있으며 각각의 특징은 아래와 같습니다.

=====================================================================
I 프레임 - Infra Frame 의 약자로, 쉽게 말해 키 프레임 입니다. 이것은 JPEG 같은 방식으로 소스로부터 직접 압축되어 온 전체 그림이죠. 가장 화질도 좋지만 가장 용량도 큽니다.

P 프레임 - Previous 또는 Predicted Frame 이라 불리며, 이전에 나온 키 프레임의 정보를 바탕으로 구성된 프레임 입니다. 화질/용량 둘 다 중간급입니다.

B 프레임 - Bidirectional Frame 의 약자로, 전후의 I/P 프레임의 정보를 바탕으로 구성된 프레임 입니다. 화질/용량이 다 최하급입니다.
=====================================================================


이것들의 순서는 대충 I B B P B B P B B P B B I B B P ... 식으로 I 프레임들 사이에 P 프레임들이, I/P 프레임들 사이에 B 프레임이 들어가는 방식으로 구성됩니다. 그리고 I 프레임부터 다음 I 프레임 전까지를 하나의 GOP 로 묶고, GOP 크기는 그 프레임들의 갯수가 되죠. 고로, 위와 같은 경우엔 GOP 크기는 12가 됩니다.

보통 MPEG 인코더들엔 저것을 설정하는 방법이 P 프레임의 갯수와 B 프레임의 갯수를 설정하게 되는데, P 프레임의 갯수는 GOP 안에 들어가는 P 프레임의 갯수고, B 프레임의 갯수는 I/P 프레임 사이에 들어가는 갯수입니다.
고로, 위와 같은 경우 P 프레임 갯수는 3, B 프레임 갯수는 2 가 됩니다.

이 GOP 관련에는 두가지 옵션이 있습니다.
Scene Detection 이라 불리는 기술과 Closed GOP 라고 하는 것이죠.

Scene Detection 은 요즘 웬만한 코덱에는 다 붙어있는 것으로, 화면이 바뀌는것을 감지해서 거기에는 I 프레임 (avi 의 경우 키 프레임)을 끼워넣는 방식입니다. 아무래도 다른 프레임들은 딴 프레임들에 의존하는 프레임들이니, 그런 프레임들과 현재 프레임에 변화가 크면 그만큼 화질이 떨어지게 됩니다. 움직임이 빠른 장면에서 깍두기들이 많이 생기는 이유도 이와 같은 것입니다. 하지만 장면 변환시마다 키 프레임을 넣어주면 용량은 좀 불겠지만, 화질 면에선 많은 향상을 가져올수가 있죠.

Closed GOP 는 GOP 구성중 다음 I 프레임 전의 B 프레임들을 빼 버리는 방법입니다.
그러니
I B B P B B P B B P B B I B B P ... 가 아니라,
I B B P B B P B B P I B B P ... 가 되겠죠.

이것을 하는데는 여러가지가 있습니다만, 첫번째로 이것을 하는 이유는 MPEG 편집시의 용이함 때문입니다.

동영상을 자를 경우, 재인코딩 하지 않는 이상 반드시 첫 프레임은 I 프레임, 그러니 키 프레임이어야 합니다.
그 외의 프레임들은 그 앞에 나온 프레임들의 정보를 이용하는데, 첫 프레임은 앞에 아무 프레임도 없으니 그런 의존적 프레임들이 위치할수가 없습니다.
그리고 MPEG-1/2 의 경우 마지막 프레임은 반드시 I/P 프레임이어야 하죠. B 프레임은 위와 같은 이유로, 뒤에 나오는 프레임을 이용하는데, 뒤엔 아무 프레임도 없으니 올수가 없습니다.

헌데 위의 보통 GOP 의 경우 동영상을 자를때 어디를 잘라도 몇개의 프레임이 소실됩니다.

예를 들면
I B B P B B P B B P
B B // I B B P ...

// 위치를 자를 경우 뒤쪽 부분이야 첫 프레임이 I 프레임이니 문제가 없지만, 앞쪽 부분은 붉은색으로 표시된 마지막 프레임이 B 프레임들이므로 이 두개의 B 프레임이 소실됩니다. 물론 부분 재인코딩을 해 주는 프로그램도 있고, 그런 경우 그 부분을 다시 압축해서 맞는 프레임으로 바쭤 주기도 하지만, 이럴 경우 그 하나의 GOP (프레임 하나만을 재인코딩 할수는 없고, 반드시 그것을 포함하는 GOP 전체가 재인코딩 되어야 합니다)는 화질이 뚝 떨어지게 되죠. 단순히 자르고 붙이는 편집시에 이런 문제는 그리 달가울리가 없습니다.

하지만 Closed GOP 를 사용할 경우
I B B P B B P B B P // I B B P ...

위와 같이 되니, // 부분을 잘라도 전혀 문제가 없게 됩니다. 그러니 자르고 붙이기가 더 용이해지죠.

두번째 이유는...

I B B P B B P B B
P B B (I) B B P ...

예를 들어 (I) 부분에서 장면이 전환되었다고 할 경우, 그 바로 앞의 붉게 표시된 두개의 B 프레임은 파란색으로 표시된 앞의 P 프레임과 바뀐 장면의 I 프레임의 정보를 이용하게 됩니다. 그렇게 될 경우 완전히 다른 두개의 프레임의 정보를 이용하게 되므로 심각하게 화질이 떨어지게 됩니다. 하지만 Closed GOP 를 사용할 경우 저런 문제가 사라지므로 약간의 화질 향상을 기대할수 있습니다.

참고로, 이전에 나왔던 Dazzle DVC 2 의 경우, 저런 상황에서는 저 두개의 B 프레임이 완전히 깨져 버리더군요. 요즘엔 고쳐 졌을지 모르겠습니다만.

이것이 위의 Scene Detection 과 같이 사용되면 더 나은 화질을 기대할수 있을지도 모르겠군요. 아, 물론 Closed GOP 사용시 전체적인 용량이 좀 늘어날겁니다.

(참고로, GOP 앞엔 Sequence Header 라는 것을 넣을수도 있는데, 안 넣어도 그냥 재생엔 문제가 없습니다만, 이것을 매 GOP 마다 넣지 않으면 DVD 로 제작했을시 재생 시작하자마자 멈춰버리거나 하는 현상이 생깁니다. 그러니 DVD 제작용이라면 Sequence Header 간격을 반드시 1 로 주시길)


GOP 에 대한 마지막으로, 어떤 정도가 가장 화질에 좋느냐는것에는 정확한 답이 없습니다. 움직임이 빠를수록 GOP 는 작은게 좋고, 움직임이 느릴수록 GOP 는 큰것이 좋죠.

B 프레임이 화질은 비록 최하라 해도, 움직임이 거의 없어서 앞의 프레임을 그대로 복사해 오는 정도가 된다면, 이건 최소의 용량으로 공짜 화질을 얻게 되는 셈입니다. 이럴경우 전체적으로 용량이 작아질테니 보다 높은 설정을 사용해서 전체적으로 화질을 더 올릴수가 있죠.

반대로 I 프레임이 화질이 좋다고 해서 이것만을 사용하게 된다면, 이것은 화질이 좋다고 해도 용량을 많이 먹게 되므로, 원하는 용량에 맞출 경우 설정이 엄청나게 낮아질수밖에 없고, 고로 전체적으로 화질이 엄청나게 떨어져 버리게 됩니다. 대신 움직임이 아무리 많아도 특별히 더 떨어지는 부분은 없게 되겠죠.

쉽게 비교하면, 정해진 용량에 동영상을 맞춘다고 할 경우, B 프레임이 많으면 전체적인 화질이 좋아지지만 급격한 움직임에서 화질이 떨어지게 되고, I/P 프레임이 많으면 급격한 움직임에도 특별히 화질이 떨어지진 않지만, 전체적으로 화질이 많이 떨어지게 됩니다.

그러니 저용량 고화질의 조건은 이 세개를 어떻게 잘 조합하느냐지, 화질이 좋다는 것만 골라서 쓰는것이 아닙니다.
정 화질을 높이고 싶으시면 Scene Detection 과 Closed GOP 를 같이 사용하시면 보다 나은 효과가 있을 겁니다.


2. Color Space

보면 MPEG 인코딩시 YUV 4:2:0 또는 YUV 4:2:2 등의 것이 있는데, 이게 무엇인지를 설명하려 하는 것입니다.

아시다시피, 컴퓨터의 색상은 RGB 로 결정됩니다. RGB 는 말 그대로 Red/Green/Blue 가 합해져서 색을 표현하는 방식이죠. 가장 이해하기 쉬운 방식이기도 합니다. RGB 24 이 경우, 각각의 RGB 채널이 8비트, 즉 256 색을 낼수 있고, 이것을 섞어서 여러가지 색을 구현합니다.

하지만, TV 의 신호는 약간 다릅니다. 사람의 눈은 색 변화보다는 밝고 어두움의 정도에 더 민감합니다. 색맹이라도 밝고 어두운건 구별합니다. 뭐 깊게 설명하자면 사람 안구 내의 빛을 감지하는 세포가 두종류가 있고 각각이 어쩌구 저쩌구 하게 설명할수도 있지만, 이런건 넘어가고... =_=

그래서 이것을 이용하는 방법이 YUV 라는 방법입니다. 여기서 Y 채널은 밝기 채널, Luminance Channel, 줄여서 루마 채널이라 불립니다. 나머지 UV 채널은 컬러 채널이죠. Chrominance Channel, 줄여서 크로마 채널이라 불립니다. 두개의 크로마 채널은 색만을 기록하고, 루마 채널에서 이것의 밝기를 조절하죠. 예를 들어 남색과 하늘색이 있을 경우, 크로마 채널의 색은 하나지만, 루마 채널에서 밝기를 조절함으로써 어두운 파란색과 밝은 파란색의 효과를 내는 겁니다.

여기서 두개의 크로마 채널이 없이 달랑 루마 채널 하나만 있다면 그것은 흑백이 됩니다.

YUV 중에서 가장 높은건 YUV 4:4:4 로, 주로 편집시에나 쓰입니다.
이것은 루마 채널이 8비트, 두개의 크로마 채널이 각각 8비트 해서, 실질적으로 RGB24 와 동일합니다. 이것은 모든 픽셀이 각각의 루마값과 크로마 값을 갖게 되죠. RGB ↔ YUV 도 별로 어렵지 않습니다.

헌데, TV 방송에는 YUV 4:2:2 를 사용합니다.
이것은 루마 채널은 여전히 8비트지만, 다른 두개의 채널은 각각 절반인 4비트씩밖에 되지 않는 것입니다. (뭐 4비트라고 하긴 좀 의미가 다르긴 하지만요) 고로, 용량을 RGB 16 과 같은 용량밖에 먹지 않습니다.

그럼 이것의 구성은 어떠냐 하면, 사용하는 색 수를 줄이는 것이 아니라, 하나의 색이 하나의 픽셀이 아닌, 두개의 픽셀에 영향을 주는 것입니다. YUV 4:2:2 의 경우, 모든 픽셀은 각각의 루마값을 갖지만, 매 가로 두 픽셀은 하나의 크로마 값밖에 갖지 못하죠.
그러니 이 두개의 픽셀은, 하나는 남색, 다른 하나는 하늘색이 될수 있지만 (루마값은 다르지만 크로마 값은 같은), 하나는 파란색, 하나는 빨간색이 될수는 없습니다. 하지만 아주 칼같이 깨끗한 화면이 아닌 이상, 이런것은 거의 구별할수가 없습니다.

다음으로 YUV 4:1:1...
이것은 NTSC DV 에 사용되는 방식으로, 역시 매 픽셀은 각각의 루마 값을 갖지만, 크로마 값은 가로로 4개의 픽셀당 하나씩밖에 가질수 없습니다. 고로 역시 위와 같이 이 4개의 픽셀은 다른 색을 가질수는 없습니다.

다음으로 YUV 4:2:0 는 MPEG-1/2 에 사용되는 방식인데 (HDTV 는 YUV 4:2:2 입니다만), 이것은 역시 루마 값은 각각이지만 크로마 값은 가로 2픽셀, 세로 2픽셀의 2x2, 총 4개의 픽셀당 하나씩밖에 갖지 못합니다. 쉽게 말해 YUV 4:1:1 과 비슷하지만, 픽셀들의 위치만 다른 셈이죠.

이렇게 볼때, 매 픽셀마다 하나씩의 크로마 값을 준다면,

YUV 4:4:4 는 루마/크로마 채널이 전부 720*480 크기지만,
YUV 4:2:2 는 루마 채널은 720*480, 크로마 채널은 360*480 인 셈이고,
YUV 4:1:1 은 루마 720*480, 크로마 180*480,
YUV 4:2:0 는 루마 720*480, 크로마 360*240 인 셈입니다.

크로마 채널들은 저 크기를 늘려서 맞추는 셈이죠.

그러니 이렇게 형식이 달라진다고 해서 보이는 색이 달라져 보이는 것이 아니라, 선 주위에 색이 얼마나 번져 보이느냐의 차이밖엔 없습니다.

보통 DVD 애니 등을 divx 등으로 립을 했을때, 선 주변이나 타이틀 근처에 파랗게 색이 번져 보이는 경우가 있는데, 보통 이런 이유입니다.


참고로 아날로그의 경우...
LaserDisc 등은 4:2:2 입니다. 그러니 컬러 채널 면에서는 DVD 보다 좋죠. 하지만 아날로그의 단점은 이 컬러 채널들에 노이즈가 굉장히 쉽게 낀다는 겁니다. 그리고 선 주변의 디테일에 흔들림이 많아서 무지개 색처럼 색이 찢어지거나 하는 경우가 많죠.
이런 이유로 LD 가 DVD 보다 화질이 떨어져 보이는 겁니다. 하지만 LD 의 루마 채널은 보통 굉장히 깨끗한 편이고, DVD 처럼 선 주위에 희미하게 압축 노이즈가 나타나거나 하는 것도 없으므로, 만일 흑백으로만 동영상을 캡쳐한다면 DVD 보다 LD 쪽이 더 나은 화질을 낼겁니다. 흑백에 화질이라고 할만한게 있을지 모르겠고, 덤으로 이런 일을 할 사람이 있을지는 더더욱 의문이지만요.

만일, 컬러 채널의 노이즈를 완벽하게 제거할수 있는 필터가 있다면, LD 쪽이 DVD 쪽보다 더 나은 화질을 내게 될지도 모르겠군요.
VirtualDub 의 TV 필터에서 IQ 채널 3x3 필터를 사용하면 나름대로 이 컬러 채널 노이즈를 뭉개 줍니다.


3. 그 외

MPEG-2 에는 3가지의 인코딩 모드가 있습니다.
Progressive, Interlaced, 3:2 Pulldown when playback (TMPGEnc 용어로 따졌을때) 가 그 3가지 입니다.

Progressive, 또는 Non-interlaced 라는건 보통 다른 모든 동영상이 압축되는 방식입니다.
프레임 단위로 압축해 넣는 방식이죠. 대신 화면에 인터같이 문제가 있을 경우엔 그것이 그대로 보이게 됩니다.

Interlaced 모드는 하나의 프레임을 두개의 필드로 나눠서 각각을 따로 압축하는 방식입니다. 그러니 720*480 프레임 하나를 720*240 프레임 두개로 나눠서 압축하는 셈이죠. 이것은 재생시 Weave 라고 하는, 이 두개를 다시 그대로 합해서 보여주는 방법과, BOB 라고 하는, 각각의 720*240 크기 프레임들을 720*480 으로 늘려서 보여주는 방식이 있습니다 (물론 BOB 의 경우 프레임 레이트가 두배가 되어 버리겠죠)
이것의 장점이라면 보통 인터 현상이 나타나는 프레임은 두개의 필드가 어긋나서 생기는 것이므로, 이 모드로 압축하면 그런거 문제 없이 압축이 가능하고, 재생할때도 BOB 모드로 재생할시 그런것이 전혀 보이지 않게 됩니다. 대신 용량을 좀 더 먹게 되죠.
참고로, 이 모드는 23.976 인 소스에는 사용할수 없습니다.

(주의: 이 모드로 압축할 경우엔 어떤 필드가 먼저 재생되는지를 설정하게 되는데, 보통 DVD 는 Top Field 가 먼저입니다. 때에 따라 Odd Field 라고 나오기도 하죠. 그러니 TMPGEnc 를 이용, Interlaced 모드로 압축하신다면 반드시 Advanced 탭에서 Top Field First 라고 되어 있는지 확인하시기 바랍니다. 잘못 설정하면 재생시 움직임마다 계속 뒤로 튕기는 것 같은 현상이 나타납니다.)

마지막으로 3:2 Pulldown when playback 라는 것은, 23.976 소스에만 사용할수 있는 것으로, 보통 TV 등의 progressive 재생을 지원하지 않는 곳에서 재생시엔 자동으로 29.97 프레임으로 늘려서 보여주는 방식입니다. 하지만 프로그레시브 지원의 DVD 플레이어나 컴퓨터에서 재생시 그대로 23.976 으로 보여주게 되죠. DVD2AVI 에서 필름 소스라 표시되는게 이 방법으로 압축된 겁니다.

이것의 장점이라면 당연히 실질적으로 프레임 수가 20% 적으니 그만큼의 화질 향상을 기대할수 있습니다. 그리고 또한, 동영상 정보에는 29.97 로 기록되므로, 진짜 29.97 프레임인 동영상과도 문제 없이 연결됩니다. (연결했을시, 플레이어에 따라 연결 지점에서 잠시 버벅대는 경우가 발생할수 있습니다만) 그러니, DVD 소스를 Inverse Telecine (IVTC) 처리를 해서 23.976 으로 바꿨을 경우, 반드시 이 모드로 압축하시는 것이 좋습니다. 그냥 Interlaced 모드로 압축하는것을 잘 처리해서 이 모드로 압축할 경우 30 ~ 40% 정도의 용량 절약 효과가 있습니다.


일단 이정도만 알고 계시면 제작에 큰 문제는 없으실듯 하군요.
Quantization 설정 같은건 아직 저도 잘 모르겠으니 넘어가고... 한마디 하자면, 딴 MPEG 인코더 같은 경우 Quantization 값을 설정할수 있는 경우가 있는데, 간단하게 말해 이 값은 낮을수록 원본 화질에 가깝게 됩니다. 그렇다고 너무 낮추면 눈에 보이는 향상은 없으면서 용량만 커 지니 주의를... MPEG-1/2 인코딩에 대한 몇가지...

요즘 miniDVD 를 시작해 보려는 분들이 좀 계심에 따라, 제 생각에 이런것 관련에 의문이 생길수 있을듯한 사항에 대해 간단히 적어볼까 합니다. 처음 하시려는 분들은 일단 이런 저런 옵션들이 있지만 이것들이 어디에 어떻게 쓰이는지 알수가 없는 이유로 헷갈리시는 경우도 많죠.

일단은 제가 TMPGEnc 위주로 사용을 하므로, 다른 인코딩 프로그램들에 대한것은 뭐라 말씀드리기가 어렵군요.
하지만 MPEG 인코더들의 옵션은 거의 다 비슷비슷 하기 때문에 여기 적는것이 다른곳에도 응용될수 있을거라 생각하는 바입니다.





반응형
반응형

image mosaic


비젼 시간의 과제로 만들어 본 파노라마 영상 생성.
음.. 원래 하는 일이 이거긴 하지만..


워낙 공부를 등한시 하고 살아왔기에.. 비젼시간을 통해서 기본적인 파노라마 영상생성 방식부터..
파노라마 영상은.. 음.. 연속된 이미지 시퀸스를 이어붙여서 만든
넓은 fov를 가지는 영상을 일컫는다.
 

그럼 만들어보자.
우선은 영상 획득..
이건 교수님이 제공해주셨다. 학교에서 찍었단다.
영상획득시 주의점
Rotation Center의 고정..
Translation 존재시엔 motion parallax와 scale 문제등이 발생하기에..
Center를 고정시키고 Rotation만을 수행해서 사진을 찍는다고 가정한다.

사용자 삽입 이미지


자.. 이게 획득된 영상이다.
사진은 100장.. 맞나? 101장인가.. ?
어쨌든 이미지 시퀸스..
먼저 우리가 할것은 Feature Detection..
harris로 corner를 찾든.. KLT로 찾든.. 직접 찾든..
찾아서 각 영상들 사이의 correspondence를 구해한다. ..


아참.. 지금 하는 건 mosaic method 중에 feature based method..
그렇게 해서 correspondence를 이용해서..
영상들간의 homography를 구한다.
matching했을대 outlier가 많이 존재할 테니까..
RANSAC 알고리즘(지금 하는 공부 부분 참조)을 이용해서 outlier들을 제거하고
inlier들로만 homography를 만들어서
alignment..

그리고 blending.. 하면..
다음 결과 완성.. 여기서 각 부분은 opencv 이용해서 하면 쉽게 해결할 수 있다.
알고보니 opencv에 homography 구해주는 함수도 있던데..
어쨌든.. 파노라마 영상이라.. 괴롭다. ㅡㅡ;

사용자 삽입 이미지

자 이제 이게 완성된 파노라마 영상..
두둥.. 역시 로테이션만 있으니 깨끗하게 잘 붙었군..
그외에 여러 후처리가 있지만 전혀 안해도 되는군..
 
근데 지금하는건 완전히.. 이런 젠장.. 황당할 정도네 ㅡㅡ;
지금 하는 것도 결과 좋으면 올려볼까나..




반응형
반응형
사용자 삽입 이미지


VFW를 사용해서 흔히들 캠으로부터 영상을 많이 얻어낸다.
간단하고 쉽게 적용할 수 있다. 그 외에도 opencv로도 artoolkit으로도
이용할 수 있다.
 
하지만.. 다수의 카메라를 빠르게 제어하긴 힘이 든다.
아니 힘이 들었다.
 
여러대 인식이 안되는 녀석도 있었고.. 매번 세팅창이 뜨거나..
그리고 무엇보다 여러개를 억지로 띄워도 느리다. ㅡㅡ;
 
빠르게... 지금 필요한 캡쳐 시스템은 좀 빨라야 하기 때문에..
 
어차피.. 딴 일하는데 잠시 이런 캡쳐 프로그램이 필요했으니.. 간단히 만들어보자.
우선 다이렉트 쇼를 공부... 하려고 보니.. 머 이렇게 많냐..
모르겠는 말이 너무 많다.
 
이 따위것 다 공부할 시간없는데..
image capture 프로그램 예제로 직행..
Still cap이라는 예제가 DirectX sdk 깔면 들어 있다.
 
이 녀석을 고쳐서 쓰기로 결정..
쓰기 어렵게 된 이녀석을 제대로 분류해서 다시 클래스 화 시키고..
클래스 하나에 완전히 독립된 캡쳐시스템을 구성하여 완성..
 
그리고 그 클래스를 여러개로 인스턴스화해서..
사용하면 끝..
 
이쁘게 프리뷰 좀 만들어주고..
일정간격으로 설정하면 자동으로 캡쳐해주게 좀 바꿔주고..
 
카메라들로 부터 들어오는 영상의 sync 맞춰주고 하면 오케이..
그럼 저 녀석이 탄생한다.
뭐 만들어진 예제 참고해서 다시 고쳐 내는 작업이었기에 얼마 걸리지도 않는다.
다시 클래스화하고 sync 맞춰서 이미지 저장되게 하는게 조금 걸리적 거리긴 하지만.
그리고 간단한 directshow의 함수들 기능만 이해하면..
 
이런건 공부가 아니라.. 단순 노가다..
이게 더 편한데.. 거참.. 어케 된 영문인지..
공부랑 거리가 먼가.. ㅡㅡ;
 
 
written by chamcham
reference : microsoft directX 9.0b



반응형
반응형
fish-eye lens를 사용하여 촬영된 이미지는 radial 방향과 tangetial 방향으로 극심한 왜곡을 가진다.
그럼 이 영상을 보정해서 펴 보자.
수 많은 방법이 있지만.. 쉽게.. 간단하게 펴 보자.

사용자 삽입 이미지

위의 사진이 fish-eye lens camera에서 획득된 사진이다.
이 사진은 인터넷 어딘가의 샘플이미지 였던거 같다.
구글 이미지에서 검색 가능..
 
어쨌든 이 녀석을 펴 보면 된다. 쉽게 하면 디게 간단하다.

사용자 삽입 이미지
이 영상이 펴본 모습..
어려운 다항식을 많이 사용할수도 있지만..
여기선 렌즈의 곡면을 구면이라고 가정을 하고 펴보았다.
이때 camera의 focal length를 알고 있다면 이 작업은 수월하게 끝이 난다.
바로 다음 그림과 같이 보정 작업을 수행하였다.

사용자 삽입 이미지
즉 렌즈의 곡면이 저 구라고 보면 구 상에 맺힌 이미지가 왜곡된 이미지 일거다.
그럼 왜곡된 이미지의 한점을 노란색 평면으로 보내는 식을 생각해보면 쉽게 풀릴 일이다.
 
구면과 평면사이는 직각삼각형의 모양을 이루므로
다음 그림과 같이 Focal length의 값과 L값, 그리고 왜곡된 점의 좌표를 알고 있으면
보정된 점의 좌표를 구할 수가 있다.
 
but, 항상 이쯤에서 주의할점..
backward mapping할것...
 
설명하기는 forward mapping이 좋지만..
hole이 생기는 것을 방지하려면 backward mapping이 좋다.
아니면 interpolation해서 메우던가..
 
어쨌든 이 내용도 논문에 나왔던 내용..
 
 
 
 
written by chamcham


reference :  신주홍, 남동환, 권기준, 정순기, "Ellipsoid를 이용한 어안렌즈의 non-metric 접근 왜곡 보정 기법", HCI 2005 中




반응형
반응형
사용자 삽입 이미지


Matrix Multiplication은 상당히 잦은 연산중에 하나다.
이 연산의 효율은 상당히 떨어진다.
이 연산을 빠르게 할수만 있다면 얼마나 많은 프로그램에서 보다 빠르게 프로그램을 구동할 수 있을까?
 
빠르게 하려면 어떻게 해야 좋을까?
놀고 있는 그래픽 카드를 써보자.
 
그래서 유로그래픽스에 발표된 논문이 바로 Matrix Multiplication이란 논문이다.
수업시간에 과제를 겸해서 이걸 간단하게 이 논문 내용을 구현해 보기로 했다.
미리 말하지만.. 3x3, 4x4 행렬의 곱을 말하는 게 아니다.
 
Dense Matrix..
즉, 데땅 큰 행렬만 취급한다.
 
실험은 32x32부터 1024x1024까지 해봤다.
그래픽 카드는 Geforce 6200, 6800에서 해봤고..
최근에 7900에서 해봤다.
 
결과적으로 빠르다.
아니 빨라야 정상이다.
 
하지만, 6200의 경우 Dense한 정도가 낮으니 오히려 느려졌다.
물론 논문에서 처럼 수학전문 라이브러리를 쓴건 아니지만...
 
여튼.. 그런 cpu 알고리즘 보다 늦었다.
이유는.. 그래픽카드에서 메인 메모리로 넘겨주는 버스 속력이 느리기 때문에..
 
하지만 매트릭스가 dense할 수록..
cpu는 급격히 느려지는 반면..
gpu는 그 느려짐이 완만해 졌다.
 
즉, gpu내부의 연산 능력은 훨씬 빠르다는 뜻..
 
최근의 7900에서 테스트 결과..
버스 스피드도 많이 개선되었고.. gpu 자체의 속력도 엄청나게 올라갔다.
 
그래서..
훨~~씬 빠른 계산 능력을 보여줬다.
 
그럼 결론은 여기까지 하고..
그럼 어케 그림 그리는 그래픽 카드로 계산을 하느냐..
 
그래픽 파이프 라인안에 우린 손을 델 수 있으니까..
제한적이긴 하지만..
 
shading language로 fragment 부분을 프로그래밍 해주면 된다.
물론 데이터는 texture에 넣어서 넘겨주고..
 
그렇게 텍스쳐에 n x n 행렬을 넣어주고
그걸 읽어와서..
 
계산을 해주면 그래픽 카드는 병렬처리하니까..  더 빠르게 계산될테고..
처리해서 다시 graphic buffer에 써주면 된다.
 
그 buffer에서 다시 데이터를 읽고 그걸 출력하면 끝..
 
이때 graphic buffer에서 데이터를 읽을때 무진장 긴 시간을 소비한다.
여기서 bottle neck 발생..
 
여튼 아직 공부도 더 필요하고 개선될 여지도 많은..
재미있는 분야..
 
다만.. 뭔가 다른 주제 하나를 가지고 있어야..
이걸 응용하는 것이 가능할듯..
 
기존에 했던 작업을 이걸로 더 개선한다거나 하는..
언젠간 공부한거 써 먹겠지..
 
교수님 말 안듣고.. 혼자 심심해서 해봤던 공부..
음.. 덕분에 많이 손해봤지만.. 그래도.. 나름 재미있었는데.. ㅋ



반응형
반응형
사용자 삽입 이미지
사용자 삽입 이미지


1970년대 IBM에서는 S/360의 뒤를 잊는 S/370이라는 메인프레임 컴퓨터를 시판했다.
현재 PC의 근간이 되는 구조를 가진 컴퓨터로서..
 
이때 처음 가상메모리 개념을 도입했다고 한다.
컴퓨터 크기는 큰 방 하나를 메울 정도 이고..
지금 이 컴퓨터를 보려면 서울에 국립 무슨 박물관 가라고 하던데...
 
어쨌든.. 이 컴퓨터가 중요한 이유는 현재 PC의 레지스터리구조라던가 메모리 구조등 모든 것이..
이 컴퓨터로부터 파생되었다는 것이다.
 
그래서 지금도 S/370의 어셈블리 랭귀지를 가르침으로서
컴퓨터의 동작원리를 가리치는 곳이 많다고 한다.
 
라는게... 나이드신 교수님들의 설명이다. 음 과연..
뭐 확실한 건.. 이 녀석 구조가 ARM 프로세서랑 유사하다.
 
전에 심심해서 ARM 단기코스 교육 받으러 간적이 있었는데 그때.. 보니..
거의 유사했다. 그래서 거의 놀면서 들을 수 있었다.
 
어쨌든.. 이제 사라진 이 컴퓨터를 만들어 보자.
 
이 컴퓨터는 입력을 천공카드로 받는다고 한다.
그래서 프로그래밍 시트에 코드를 적어서 뚫어서 입력으로 넣는다. 헐..
 
그렇게 만들수는 없으니까.. 일단 구조를 파악하고..
입력은 TEXT 파일로..
 
자 컴퓨터라면 기계어 명령을 받아서 그것을 처리해서 그 결과를 보여줄 수 있어야 할 거다.
하지만 기계어로 코딩할 수 있는가? 재주 좋은 분들이라면 몰라도..
난 한줄이상 기계어로 코딩 못한다.
 
그럼 최소한 컴파일러는 없더라도.. 어셈블러 정도는 탑재해야 할거다.
그리고 간단한 매크로를 처리할 수 있는 매크로 프로세서도 전처리로 넣어주는게 예의아닌가.. ?
 
난 예의가 있으니까.. 넣어주기로 결정..
하지만 문제는 시간.. 과제도 해야하고.. 학교도 다녀야 하고.. 내 공부도 해야하고..
만화도 봐야하고.. 게임도 해야하고.. 교수님한테 혼도 나야하고.. 여자도 좀 만나봐야겠기에..
이럴 시간이 없었다. 그당시엔.. 지금은 시간 많다.
" 저는 시간이 많아요. 웃을때까지. 쭉쭉쭉 쭉쭉쭉" ㅡㅡ;;
 
그래서 방학이되면 틈틈히 교수님께 체크 받으면 만들어갔다.
가장 큰 문제는 자료가 없다는 것!
 
당시 배우던 시스템 프로그래밍 책 외에는 자료가 단 하나도 없었다.
도서관에 누렇게 빛바랜 책이 두어권 있었다.
서베이했지만.. 논문 다운로드 불가.. 그시절엔 그걸 어떻게 하면 다운 받을 수 있는지도 모르고..
 
그렇게 그렇게 시간만 끌면서 하나하나 만들어갔다.
 
가장 먼저 만든 것이 M6 매크로 프로세서
전처리로 이녀석을 탑재하기로 했다.
 
매크로 프로세스는 문자 입력을 단순 반복을 통해서 처리해주는 녀석이라서..
걍 잘 만들어주면 된다.
M6 매크로 완성 장착!
 
잊지말자.. 입력은 S/370 어셈블리 소스코드..
전처리 된 것을 .. 이제 어셈으로 기계어로 바꿔줘야 한다.
 
그렇다면.. 필요한 것은 S/370 어셈블러
뚝딱뚝딱.. 처음에 명령어들이 제대로 나와 있지 않아서 찾느라 고생하고..
이해를 잘못해서 잘못짜고..
완전 엉망진창이었다.
 
고치고 고치고.. 결국 완성..
기계어로 주루룩 출력..
 
이제 만들 녀석은... 링커..
소스 파일은 한개가 아니다.
 
헬로씨 만들거도 아니고... 소스 파일이 하나만 있을리가 없다.
소스 파일이 여러개고 여러개라면 ... Extern 으로 선언된 녀석도 있을 것이고..
 
여튼 통합해줄 링커가 필요하다.
철컹.. 만들어서 장착..
 
이제 진짜 진짜 마지막..
가장 핵심 Interpreter 가 등장할 차례..
 
이제 완성된 기계어 코드를 읽어서
할당된 메모리에 올리고
 
그 메모리에서 PC가 가르키는 부분을 읽어서 명령어 레지스터에 명령어 넣고..
명령어 분석해서.. 데이터 읽어들이고..
그걸 ALU가 처리하고. .등등등...
 
이러한 작업을 할 우리의 S/370 컴퓨터가 있어야 한다.
그 녀석이 위에 보이는 인터프리터..
 
매크로 프로세서나 어셈블러, 링커까지는 유닉스상에서 작성하는 바람에..
콘솔모드용 프로그램이었는데..
 
인터프리터는 걍 윈도우용으로 만들어봤다.
물론 유닉스에서 짠 것도 윈도우 콘솔에서 돌아가도록 다 바꿨지..
 
인터프리터 내부에 Arithmetic 연산을 처리할때.. 이 부분은
객기 부린다고 인라인 어셈으로 짰었다...
왜 그랫지? ㅡㅡ; 그냥 그러고 싶었다..
 
여튼 그렇게 뚝딱뚝딱 해서 이 녀석 완성..
레지스터 상태라던가 메모리 상태.. 결과 윈도우.. 입력 기계어.. 현재 동작 상태..
등을 보여준다..
 
생긴건 저래도 저게 S/370 프로그램이다.
 
그럼 정리해 보면..
 
1. 입력 (S/370 어셈블리 코드)
2. M6 매크로 프로세서가 전처리
3. S/370 어셈블러가 기계어로 번역
4. 링커가 통합
5. 인터프리터가 기계어를 수행
6. 출력 (어셈블리 코드가 수행된 결과 출력)
 
S/370에서 여러 파일로 된 제대로 된 코드를 구하질 못해서 책에 나온 입력 수 5개에 적당한 값을 곱해서
출력하는 예제 소스를 이용해서 테스트 해봤다.
 
물론 인터프리터가 S/370의 전체 명령을 지원하는 건 아니다.
지원하는 건 전체 명령의 70%정도..
나머지 명령을 쓰는 예제도 드물고.. 명령어의 제대로 된 형태도 안나와 있어서..
 
실제 시스템 소프트웨어 책에서 소개하는 건 50%도 안된다.
그나마 다른 책에서 찾아서 많이 끼워넣은거다. ㅡㅡ;
 
여튼 이렇게 수행이 된다.
이걸 다 합쳐서 하나의 IDE로 만들어 줘야 하는데..
급 귀차니즘 발동.. 하기 싫다.
윈도우 디지인 다시하기도 싫고..
 
어쨌든.. 지금은 이때랑 많이 다른 일을 하고 있지만..
모르는 걸 찾아보고 해결하려고 노력한다는 점은 비슷한 거 같다.
 
하는 동안 정말 재미있었던거 같다.
컴퓨터 시스템 쪽으로 대학원 찾아서 갈까라고 심각하게 고민할 정도로..
 
하지만 뭐든.. 난 너무 어중간해서... ^^;



written by chamcham



반응형
반응형
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지


컴파일러 시간이었다.
학부시절 담당 교수님 수업..
항상 엄하고.. 갈구고.. 그랬지만.. ㅋ
그래도... 강의 능력만큼은 탁월한 분...
 
내가 본 사람들 중에서 가장 쉽게 지식을 전달하는 분 같다.
어느 곳에서도 그렇게 쉽고 명료하게 전달하는 분은 없었던거 같다.
 
그 시간에 배웠던 이것..
물론 내 머리속 메모리는 Short Term과 Sensory 뿐이라서..
데이터를 오래 담지는 못한다.
 
그 시절.. 과제였다.
단순히 정규표현을 받아서 처리하는 건데..
 
생각보다 애 먹었었다.
정말.. 뭐 이따구인지...
 
보통 NFA 를 DFA로 바꾸는 알고리즘을 소개한 책은 많다.
하지만 문제는 Regular expression을 NFA로 바꾸는 과정..
 
생각보다 감안해야할 문제가 많았다.
그리고 Reduce하는 것도..
 
물론 NFA를 DFA로 만드는 것은 알고리즘도 다 나와있고.. 쉽다.
그렇게 해서 쭉 만들어 봤다.
리눅스에서 작성한 터라...  그래피컬하게 만들어보진 않았지만..
그래피컬하게 나타내봐도 재미있는 프로그램이 될 듯하다.
 
어쨌든 거의 한달간 머리싸메고 이거 오류없이 입력받고 처리할 수 있는데만..
초점을 맞춘거 같다.
 
이거 다해서 보고서랑 PT 정리해서 가져갔을때 하는 말..
" 이거 단순하게 했자나? 이걸로 뭘 시간을 끌고 그래? "
 
라는 말을 들었다. ㅠ.ㅠ
 
에공~ 아마 이때... 컴파일러관련 지식을 머리에서 다 지웠는가 보다 ㅡㅡ;
 
 
written by chamcham



반응형
반응형
사용자 삽입 이미지



이것 역시 과제였던 거 같다.
흔히 선 긋는거랑.. 원그리는거... 쉽다.
그냥 라이브러리에서 호출해주면 된다.
OpenGL이라던가.. OpenCV등등...
직접 점 찍어서 그려본 적은 있는가?
 
예전에 Direct X 처음 배웠을때 버퍼락 걸고 점찍는거 배웠을때 처음 해 본게
선 긋는거 였다. 생각보다 잘 되지 않았다.
 
그래서 Bresenham 알고리즘을 보고 선긋는 걸 해결했던 기억이 난다.
이 과제 역시.. Bresenham 알고리즘이라던가. midpoint 알고리즘 등을 이용해서
선을 긋고, 원을 그리는 작업을 하는 프로그램이다.
 
그리고 그려진 Transform을 주면 그 결과를 출력해주는 간단한 프로그램이다.
그다지 특별할 것도... 힘들 것도 없는 거지만..
그래도 예전에 처음 Direct X 배울때 생각나서 재미있었다.
물론 그전에도 선을 그어본 기억은 난다.
 
처음 도스에서 어셈코드로 점찍는 거 배웠을때..
그때나.... DirectX나.. 별반 다른건 못느끼겠다.
 
지금은 뭐 맨날 OpenCV만 쓴다만..
여튼.. 그랬던 것이었다. ㅡㅡ;
 
 
 
written by chamcham


reference : bresenham 선그리기 알고리즘 (http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html)



반응형
반응형
사용자 삽입 이미지


무선 통신 어쩌구 하는 수업이었는데..
그다지 관심이 없었던 탓인지 재미를 못느꼈다.
계속 잠만 잔거 같다. ㅡㅡ;
 
그러던중 과제 등장..
신지에서 만든 GNEX용 게임을 만들어 보라는 것!
과연...
 
이.. 이럴수가.. 레퍼런스가 한글이다.
이렇게 반가울 수가..
그리고 게임용 플랫폼인지라..
GNEX 개발툴에는 게임 제작을 위한 기본툴들이 다 제공 되고 있었다.
 
그래픽 에디터까지..
 
난.. 어디서든 간단한 게임을 만들자고 하면..
가장 먼저.. 항상 알카노이드를 만든다.
 
다이렉트 X를 공부할때도 그랬고..
GDI를 공부할때도 그랬고..
항상.
 
그래서 이번에도 알카노이드..
블럭을 그리고.. 막대를 그리고.. 공을 그리고..
뚝딱뚝딱..
 
이미지 로딩하고...
그 이후엔 어디서 만들든 게임 프로그램은 똑같지.. 머..
 
샥샥.. 이 게임의 중요한 부분은 충돌처리뿐..
레퍼런스가 한글이라서 너무 프로그램짜기 쉽다.
그리고 IDE도 제공되고..
편집툴까지 주는데...
 
이까이꺼 만드는데 몇시간 걸리지도 않는다..
완전 GNEX는 게임 짜기에 편리한 환경을 제공하고 있었다.
 
하지만, 핸드폰 특성상 다중키 입력도 지원되지 않고..
쩝.. 문제가 좀..
 
그래도.. 심심타파.. 재밌었다...



반응형
반응형
사용자 삽입 이미지

사용자 삽입 이미지


학부때.. 정보통신학과에서 가서 수업을 들은적이 있다.
네트워크 관련 수업은 모두 여기서 들었지 싶다.
 
네트워크 프로그래밍 2란 수업이었는데..
그 시간에 과제로 나온 프로그램이다.
 
진짜 단순한 게임으로 클라이언트들이 접속하면 그 클라이언트들끼리 가위,바위,보를 계속하게 만드는
프로그램이다. 그래서 승수라던가. 뭐 이런걸 기록하는..
 
교수님께서 클라이언트를 작성해주시면
그 클라이언트에 프로토콜을 맞춰서..
 
서버 프로그램을 작성하면 된다.
다른 사람의 프로그램과 프로토콜을 맞춰본다는 것에서 재미를 찾을 수 있었다.
 
그닥 어려운 것도 없었고..
참여 클라이언트의 인원수는 리소스가 허용되는 만큼 무제한으로 받도록 했다.
 
뭐 그다지... 난이도가 있는 것도 아니고..
그냥 재미로 한번 해볼만한 것 같다



반응형
반응형

사용자 삽입 이미지



운영체제 시간이었다.
학부시절 운영체제 과제는 항상 팀과제였다.
 

하는 것은 스케쥴링 알고리즘을 시뮬레이션 해보는 프로그램 작성..
RR, SRT, MLQ, MFQ 등을 선택해서 만드는데..
MFQ 같은 경우는 multiple feedback quene라서..
RR, SRT등을 다 구현해야한다.


그래서 항상 사다리로 결정..
그래서.. 사다리를 탔다. 재수없는 놈은 뒤로 넘어져도 코가 깨진다고..
MFQ 결정..
그냥 만들어야지 뭘..
 

초반엔 각 스케쥴링 알고리즘에 대한 조사를 했다.
그당시.. 하고 있던 일이 있어서.. 초반엔 간단한 조사들을 조원들에게 역할을 나눠부탁하고..
서베이해 온것을 토대로 프로그램을 내가 작성하기로 했다.
 

그 무렵 교수님 밑에서 S370 매크로프로세서랑 어셈을 만들고 있던 때라서..
뭔가 여기에 집중이 되질 않았다.
 
그러다.. 역시 급하니까.. 여기에 매달리게 되더이다..
처음엔 스케쥴링 알고리즘들을 자료를 보며 공부하고.
각 큐별로 사용될 알고리즘을 결정하고..
각 큐를 클래스화 시키고..


그 클래스들 사이의 인터페이스를 결정해보았다.
그렇게 해서 간단한 Text version으로 먼저 작성을 했다.

여기까지 2주가량의 시간 소모..
그리고 그 다음 한주를 Debugging과 수정에 소모했다.
그리고 Text version의 완성..
 

다음은 그냥 MFC로 그냥 나타내주면 되는거다.
걍 GDI로 쭉쭉 그렸다.
쭉쭉쭉 쭉쭉쭉.. 저는 시간이 많아요.. 될때까지 쭉쭉쭉 쭉쭉쭉.. ㅡㅡ;;
 
팀원들과 교수님이 지적한 사항 수정..
다듬고 수정.. 내 맘대로 결국 수정..
 
그렇게 해서 이 프로그램을 완성한 것 같다.
그닥.... 짐 보니 상태는 별루네..
여튼.. 뭐 그런거다. 이 바닥이 다 그렇지..
 
이런건 차라리 간단하다.. 헐.. 지금 하는건 왜 일케 안풀리냐.. ㅠ.ㅠ



written by chamcham




반응형
반응형
사용자 삽입 이미지


OpenGL을 잠시 잠시 공부하던 중 ..
그동안 공부한 걸루 뭘해볼까.. 하다가..
 
도형을 그리고 오브젝트를 Transform 하고..
Texture mapping까지 해볼 수 있는 예를 생각하다가..
 
마침 그해 배운 자료구조에 나오던 트리가 데이터를 삽입/삭제할때
어떻게 동작하는지 가시적으로 보여줄 수 있는..
 
예로서 작성해 보았다.
크게 어려운 것도 없지만.. 그래도..
항상 자질구레한 일들이 발목을 잡는 법..
 
덕분에 OpenGL 책 읽은 거 정리도 해 볼 수 있어서.. 재미는 있었다.
근데 지금봐도 허접하네 ㅡㅡ;



반응형
반응형

사용자 삽입 이미지


군대 있는 동안 틈날때마다 프로그래밍 책을 보고 있었다.
실습을 해보기 힘들어서 그냥 책읽고 코드 적어보고..
 
그러다가 짬이 차면서..
다행히 특기가 31710 전산이라서..
이것저것 잡다한 프로그램을 만들어 볼 기회가 생겼다.
 
비디오 목록과 책목록을 관리하는 간단한 데이터 베이스 프로그램이라던가..
간단한 메신져 프로그램, 간단한 게임.. 등등...
 
그러다가 병장이 되고 시간이 많이 남게 되서..
Direct X를 공부하면서 그래픽 엔진을 만들어 보고 싶어졌다.
 
그래서 비록 2D 지만 그래픽 엔진을 만들어보았다.
이때가.. DirectX 6, 7 이 나오던 시절이라서..
아직 그때는 3D랑 2D가 통합되지 않던 시절
 
그래서 2D 엔진을 만들어서 그 엔진 성능의 기능을 갖추기 위한...
슈팅 게임을 만들어보기로 했다.
 
우선 필요한 것은 이미지..
캐릭터의 이미지는 책 부록으로 들어있던 소스 이미지라던가..
비행기 사진 캡쳐 된걸 포토샵으로 편집한다던가..
해서.. 이미지를 획득하였다.
 
그렇게 해서 그래픽 출력을 모두 완성하고 나니까..
입력이 문제였다. 다중키 입력과 연속 입력등을 제어하기 위해서
DirectInput을 이용해서 라이브러리에 추가..
 
하지만 게임 진행 시나리오를 채 만들지 못하고 제대해 버렸다.
그 후 몇몇 작업을 거쳐
 
다른 효과들을 추가했다...
 
하지만 그 소스는 집에 컴퓨터와 함께 무덤속으로...
결국 남은 건 제대직전에 백업해뒀던 소스뿐..
 
Save the earth..
그 당시 나의 지구를 지켜줘라는 애니메이션을 보고 있던 터라..
이렇게 제목을 지었는데..
 
보기엔 저 따위지만..
나 나름은 정말 많은 공부가 된..
보이는 것 이상의 많은 걸 가진.. 소중한 프로그램이다.
 
이렇게 열심히 살았을 때도 있었구나.. 싶다..  
회사 갔을때 포트폴리오로도.. 이 녀석을 제출했었는데..



반응형
반응형

사용자 삽입 이미지


군대 있을때 일병 끝날 무렵인가 보다.
군대 있을때 c_study라는 군대내 인트라넷 모임의 중급 관리자를 한적이 있다.
그 때 중급코스에 참여하고 있는 사람들 숙제로 채팅 프로그램이란 과제를 냈었다.

그때 예로 이렇게 만드는게 좋겠다고 생각되서
사무실에 있던 싸이릭스 MMX 200맞나?
이 컴퓨터에서 답안으로 작성했던 예제..
펜티엄 133보다 더 느려서 Visual C 띄워서 컴파일 10번 정도하면 죽었던 기억이 난다.

그땐 참 열심히 살았던가 보다..

추가글)
winsock을 사용했고, 시작하고 서버, 클라이언트 중 하나를 선택해서 동작할 수 있다.
서버로 맞춰놓고 서버 돌리고, 다른 프로그램 실행후 클라이언트 모드를 선택하고
접속을 하면 접속가능하다.

이것 말고 udp형태로 자료전송할 수 있게 인터페이스를 이쁘게 만들어봤던게 있는데..
하드 날리면서 그만.. ㅡㅡ;

written by chamcham




반응형
반응형
 출처 블로그 > 티라미슈와쉬폰케잌
원본 http://blog.naver.com/sanghaa123/150008917285

 

 

 

★ 프로그래밍 전문교육원으로 가기 ★

 

↑ 클릭!

 




반응형
반응형
출처 블로그 > 주절주절~
원본 http://blog.naver.com/monsterya/20020592487

아~~~ 이녀석 잡는데 또 며칠 걸렸다. ㅡ.ㅡ;;

실제로 이녀석은 vc98 / mfc / lib 폴더에도 없는 녀석인데;;

내꺼만 없나 해서 다른 컴터도 다 뒤져도 없는 넘이더라 ㅡ.ㅡ;;


결국... ㅠㅠ;;; msdn 문서에서 발견한 한 글귀;;


mfc에서 unicode를 사용할 경우 에러를 가지게 된다.

이것은 mfc에서 유니코드 라이브러리가 디폴트로 하드드라이브에 가지 않기 때문이며

이 에러를 없애기 위해선 custom에서 mfc의 라이브러리 폴더로 가서 detail항목에서

unicode 관련 라이브러리를 깔아야 한다. 이를 하지 않을 경우 에러를 받게 될것이다.;;


라는 글귀다...ㅡㅡ;;


젠장... 뭐 이딴 경우가 다 있냐고?? ㅡ.,ㅡ;;;


머.. 한마디로 mfc 로 유니코드를 쓰기위해서 한번씩 엿되어보란 소리다.. ㅡㅡ;;;

아~~~~ 젠장 젠장. 젠장.. 아.. 그리고 이부분에서

네이트의 답변을 보자면 ;;

-> 만약 mfc42ud.dll 때문에 에러가 날경우 릴리즈로 해보세요..

막 이런 글이 많은데;;; 즉 맨뒤의 d는 디버그를 지원하는 것인데;;; 릴리즈를 하면 디버그 모드가 아니라서  mfc42ud.dll 에러는 나지 않는다.

하지만... 이 경우 mfc42u.dll때문에 에러가 날수 있다...

근본적인 대처법은 아니다..... ㅠㅠ;;;

자 우리모두 열심히 unicode 용 mfc라이브러리를 깝시다.!!!




반응형
반응형

출처 블로그 > tazamara님의 블로그
원본 http://blog.naver.com/tazamara/120013196188[http://kldp.org KLDP]

[http://www.sf.net 소스포지]
[http://www.codeguru.com 코드구루]
[http://www.cprogramming.com CProgramming]
[http://kldp.net KLDP net]
[http://www.cygwin.com Cygwin]

[http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.shtml 매트랩 도움말]
[http://www.elet.polimi.it/dsp/courses/ens/files/shortmat.pdf 매트랩 간단한 Ref]
[http://www.eedsp.gatech.edu/Information/MATLAB_User_Guide/index.shtml Little Bits Of Matlab]
[http://www.cvshome.org/docs/manual/cvs-1.12.1/cvs.html CVS 매뉴얼]

[http://www.giss.nasa.gov/latex/ltx-2.html Help On LaTeX]
[ftp://ftp.ams.org/pub/tex/doc/amsmath/short-math-guide.pdf LaTeX 수식쓰기]
[http://vim-latex.sourceforge.net/documentation/latex-suite-quickstart vim-latex]
[http://www.tutorgig.com TutorGig]

[http://www.suldo.net/color.html 색상표]
[http://myhome.naver.com/mijuall/color.html 색상표2]
[http://trio.co.kr/webrefer/css1/rec-css1.html CSS1 규격]

[[TableOfContents]]


== 데이터 압축 기술 ==
 [http://datacompression.info/SourceCode.shtml datacompression.info] 일반 데이터, 음성, 소리, 영상, CRC 기술 등 압축에 대한 모든 소스가 있음 [[BR]]
 [http://www.data-compression.com/index.html data-compression.com] 데이터 압축에 대한 일반적 이론을 다루는 곳. 간단한 음성 압축기들의 소스를 구할 수 있음 [[BR]]
 [http://shnutils.freeshell.org/shorten/ Shorten 비손실 음성압축] 전혀 손실없이 음성을 압축하는 기법 [[BR]]


== 멀티스레드 프로그래밍 ==
 [http://www.faqs.org/faqs/threads-faq/part1 threads FAQ] 멀티스레드 프로그래밍을 할 때 자주 하는 질문 답변 모음 [[BR]]
 [http://developer.sun.com/solaris/articles/multithreaded.html Eliminating Nonreentrant Library Calls in Multithreaded Programs] 솔라리스 개발자 사이트의 내용으로, 멀티스레드 프로그래밍시에 문제가 될 수 있는 함수 호출과 이를 수정하는 방법에 대해 다룸 [[BR]]


== 로직 ==
 [http://www.cl.cam.ac.uk/users/mn200/hol-tutorial/index.html HOL] Higher Order Logic의 명제의 일부를 증명하는 자동 기계! [[BR]]
 [http://www.sics.se/sicstus Sicstus Prolog] 로직 언어인 Sicstus Prolog의 홈페이지 [[BR]]


== 문서화 기술 ==
 [http://www.ktug.or.kr KTUG] 한글 TeX 유저 그룹 [[BR]]
 [http://docpp.sourceforge.net DOC++ 홈페이지] C 파일로부터 자동으로 레퍼런스를 생성하는 툴 [[BR]]
 [http://thunder.prohosting.com/~sgould/software/settingUpVCxxDOCxx.shtml] Visual C++에서 자동으로 DOC++ 쓰기 [[BR]]
 [http://trade.chonbuk.ac.kr/~leesl/code/ 한글과 코드] 한글 코드에 대한 개념과 이해를 위한 문서 [[BR]]
 [http://www.dpawson.co.uk/docbook/reference.html Docbook basic and references] Docbook에 대한 기본적인 소개와 레퍼런스 [[BR]]
 [http://www.miwie.org/docbkmake/ Docbook makefile template] 자동으로 Docbook 문서에서 doc, pdf, html 등의 문서를 생성하는 makefile [[BR]]
 [http://www.miwie.org/docbook-dsssl-faq.html DSSSL stylesheet FAQ] DSSSL 스타일쉬트 사용시 가려운 곳을 긁어줌 [[BR]]
 [http://www.mulberrytech.com/dsssl/dsssldoc/cookbook/cookbook.html DSSSL Cookbook] DSSSL 스타일쉬트 사용 설명 [[BR]]
 [http://www-aig.jpl.nasa.gov/public/home/decoste/HTMLS/converters.html HTML converters] HTML을 임의의 다른 포맷으로 컨버전하는 방법 [[BR]]
 [http://i18n.kde.org/doc/markup KDE Docbook 가이드] KDE 내의 프로젝트를 Docbook으로 문서화할 때 지켜야 할 사항 [[BR]]
 [http://www.w3.org/Tools/Word_proc_filters.html 워드 프로세서 필터들] 각종 워드 포맷 변환, 문서 내 수식 포맷 변환 등(TeX <-> Word) [[BR]]
 [http://www.lysator.liu.se/~alla/dia Dia 벡터 그래픽 에디터] MS Visio와 비슷한 벡터 그래픽 에디터. 논문에 들어갈 그림을 그리는 데 유용함. SVG, PS 출력을 지원 [[BR]]
 [http://www.goosee.com Eve 벡터 그래픽 에디터] 매우 가볍고 사용하기 편한 벡터 그래픽 에디터. 단 SVG 표준 출력을 하려면 돈을 내야 함 [[BR]]
 [ftp://ftp.ams.org/pub/tex/doc/amsmath/short-math-guide.pdf LaTeX에서 수식 쓰기] American Mathematics Society에서 만든, {{{LaTeX}}}에서 수식 쓰는 방법에 대한 간단한 문서. 필요한 내용이 다 있어 참조하기 좋음 [[BR]]
 [http://purple.icu.ac.kr/~kimkk/guide/TeX/BibTeX.htm BibTeX 엔트리 설명] {{{BibTeX}}}에서 쓸 수 있는 각종 인용 형식들의 엔트리들이 설명되어 있음 [[BR]]
 [http://www-h.eng.cam.ac.uk/help/tpl/textprocessing/squeeze.html Sqeeze LaTeX] 최대한 종이를 아껴서 {{{LaTeX}}} 문서를 작성하는 방법 [[BR]]
 [http://www.fysik.dtu.dk/~schiotz/comp/latextips Jacob's LaTeX tricks] 참고문헌 폰트와 간격 줄이기 등 팁들 [[BR]]
 [http://www.giss.nasa.gov/latex/ltx-2.html Help On LaTeX] 온라인 {{{LaTeX}}} 도움말 [[BR]]


== 자유 소프트웨어 ==
 [http://kldp.org Korea Linux Documentation Project] 수많은 유용한 리눅스 문서들이 있음 [[BR]]
 [http://www.reactos.com ReactOS] 개발중인 오픈 소스 윈도우 클론 OS [[BR]]
 [http://www.winehq.com Wine] 개발중인 Win32 API의 오픈 소스 구현. 리눅스와 X윈도 시스템 위에서 동작 [[BR]]
 [http://www.cvshome.org/docs/manual/cvs-1.12.1/cvs.html CVS 매뉴얼] [[BR]]

== 공학에 유용한 수학 ==
 [http://www.physics.gmu.edu/classinfo/phys590/spr00/CourseNotes/derivativeAlgorithms.html 수치 미분 식] 말 그대로 수열을 미분해서 수열을 만드는 식 [[BR]]
 [http://www.sci.csuhayward.edu/statistics/Resources/Essays/BinPois.htm 뽀아송 분포] 뽀아송 분포에 대해 이해하기 쉽게 설명해 놓은 사이트 [[BR]]
 [http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.shtml 매트랩 도움말] 공식 도움말 사이트 [[BR]]
 [http://www.cs.umd.edu/~mount/ANN ANN] Approximate Nearest Neighbor를 빠르게 찾아주는 소스 [[BR]]
 [http://sources.redhat.com/gsl GNU Scientific Library] 각종 행렬 계산이나 확률 분포 등등을 쉽게 쓸 수 있도록 해주는 라이브러리 [[BR]]
 [http://myhome.thrunet.com/~hanahli 모험연구소 - 주체공장] 많은 병렬 컴퓨팅과 수학을 위한 전산 도구들에 대한 정보가 있음 [[BR]]

== 프로그래밍 ==
 [http://www.codeguru.com 코드구루] 각종 비주얼 C++ 등의 작고 유용한 소스들 [[BR]]
 [http://www.devpia.com 데브피아] 개발자 포탈 [[BR]]
 [http://www.cprogramming.com CProgramming] 위 사이트와 비슷. 각종 C/C++ 소스들 [[BR]]
 [http://sources.isc.org comp.sources.unix] ISC에서 운영하는, comp.sources.unix 뉴스 그룹에 올라왔던 글들의 저장고 [[BR]]
 [http://sources.redhat.com/pthreads-win32 Pthread for win32] 윈도에서 posix thread를 이용하여 코딩할 수 있게 해 주는 라이브러리 [[BR]]
 [http://world.std.com/~jmhart/opensource.htm Pthread emulation for win32] 간단한 매크로로 윈도 native thread 인터페이스를 pthread처럼 쓸 수 있게 해주는 헤더. 버그있음! 간단한 곳에만 쓸 것 [[BR]]
 [http://www.helloec.net/network/NetBIOS.htm NetBIOS] NetBIOS가 무엇인지에 대해 설명 [[BR]]
 [http://members.tripod.com/~staskh 윈도우 MIB의 비밀] 윈도에서 맥어드레스를 비롯한 모든 네트워크 관련 정보를 얻는 방법 [[BR]]
 [http://cplus.kompf.de/macaddr.html DLPI API] 솔라리스, AIX, HPUX 등에서 맥어드레스를 얻는 방법 [[BR]]
 [http://www.artpol-software.com/index_zip.html ZipArchive] 윈도 VC++용 zip 라이브러리. 실시간 콜백 기능을 지원함 [[BR]]
 [http://www.createwindow.com/programming/crc32 CRC32 소스] 간단한 CRC32 생성과 체크 소스 [[BR]]
 [http://www.homepagebuilder.co.kr 홈페이지빌더] 홈페이지 만들기 [[BR]]


== 윈도우 디버깅 ==
 [http://www.smidgeonsoft.com PEBrowse] 윈도우 실행 파일 또는 메모리에 떠 있는 실행 파일 이미지의 구조를 보여 주고 거의 모든 정보를 보게 해주며, 소스와 디버깅 정보가 있을 경우 심볼 정보까지 모두 보여줌. 최고의 공개 디버거! [[BR]]
 [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndebug/html/msdn_debugEH.asp Win32 Debugger API] Windows에서 지원하는 기본적인 디버깅용 API에 대한 문서. 자신만의 디버거를 만들 수 있음 [[BR]]
 [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndebug/html/msdn_peeringpe.asp 윈도우 실행파일의 구조] 윈도우에서 사용하는 Portable Excutable 파일의 구조를 설명해 놓은 문서 [[BR]]
 [http://msdn.microsoft.com/library/en-us/debug/base/debug_help_library.asp DbgHelp 라이브러리] 윈도우에서 기본 제공하는, 실행되고 있는 프로세스에서 정보를 얻어오는 API에 대한 문서 [[BR]]
 [http://msdn.microsoft.com/library/en-us/perfmon/base/tool_help_library.asp ToolHelp 라이브러리] 현재 떠 있는 프로세스의 리스트와, 각각의 프로세스의 Heap 핸들을 얻을 수 있음 [[BR]]
 [http://www.gw32.de/english.html GameWizard Win32] 게임에서 체력값이나 기타 등등의 값을 바꿀 수 있음 [[BR]]
 [http://ampm.ddns.co.kr/~reverse 오픈 리버스 포럼] 오픈 리버스 포럼 [[BR]]

== 네트워크 ==
 [http://cosmos.kaist.ac.kr/cs441/text/Contents.htm Computer Networking 책] KAIST 전산망 개론 교과 과정에서 배우는 책의 내용이 모두 올라와 있음 [[BR]]
 [http://khdp.org Korean Hacking Documentation Project] 해킹관련 한글문서 프로젝트 [[BR]]
 [http://www.packetfactory.net Packet Factory] libnet이라는 패킷 헤더 생성 유틸리티가 있음 [[BR]]
 [http://winpcap.polito.it Winpcap] 윈도우용 packet capture와 injection 인터페이스를 제공하는 라이브러리 [[BR]]
 [http://www.ethereal.com Ethereal] pcap에 기반하여 각종 상위 프로토콜(TCP, UDP, HTTP, FTP, SMTP, POP, IMAP, 기타 등등)의 패킷을 분석해 주는 GUI 프로그램 [[BR]]
 [http://ettercap.sourceforge.net Ettercap] 각종 암호화된 프로토콜 패킷을 스니핑해 주며, man in the middle attack이 구현되어 있음 [[BR]]
 [http://beta.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_20372735.html Raw Socket in Windows] 윈도우에서 간단히 TCP, IP, UDP 헤더와 체크섬을 생성하는 소스 [[BR]]
 [http://www.megasecurity.org/Dos/Blitznet.html Blitznet] 분산 DOS 공격을 하게 해 주는 간단한 유틸 [[BR]]
 [http://sql.uniadnet.com/network/makelan.htm 랜선 만들기] 국제 표준! [[BR]]
 [http://www.littlewhitedog.com/reviews_other_00009.asp 크로스 케이블 만들기] 랜선 크로스 케이블 만드는 방법! [[BR]]
 [http://www.k-otik.com/exploits K-0TIK] 최신 exploit이 꽤 잘 올라옴 [[BR]]
 [http://www.metasploit.com MetaSploit] Windows shell code [[BR]]
 [http://211.239.117.136/~leedw/mywiki/moin.cgi/_b5_bf_bf_ec_c0_c7_20HomePage 동우의 홈페이지] 수많은 네트웍 해킹 관련 정보 [[BR]]
 [http://www.joinc.co.kr Joinc] 각종 네트워크 프로그래밍 관련 문서들 [[BR]]
 [http://www.webworkshop.net/pagerank.html Pagerank Explained] [[BR]]
[http://211.239.117.136/~leedw/mywiki/moin.cgi/_b5_bf_bf_ec_c0_c7_20HomePage 동우의 홈페이지] 프로그래밍, 해킹, 리버스 엔지니어링 등에 대한 정보가 잘 정리되어 있음 [[BR]]


== 패턴인식 ==
 [http://www.dai.ed.ac.uk/CVonline CVonline] 컴퓨터 비젼에 대한 개론 [[BR]]
 [http://iris.usc.edu/Vision-Notes/bibliography/contents.html Annotated Computer Vision Bibliography] [[BR]]
 [http://sourceforge.net/projects/opencvlibrary Open Computer Vision Library] 인텔에서 만들어 공개한 오픈소스 비전 라이브러리. BSD 라이센스를 따름 [[BR]]
 [http://www.cs.berkeley.edu/~daf/book.html Computer Vision : A Modern Approach] 책 [[BR]]
 [http://marathon.csee.usf.edu/edge/edge_detection.html Edge detector 비교자료] [[BR]]
 [http://prettyview.com/edge/edge.shtml Edge detector 데모] [[BR]]
 [http://www.math.ucla.edu/~imagers UCLA Math Image Processing Group] Active Contour Model without Edges! [[BR]]


== 인공지능잡다 ==
[http://www.advancedlab.pe.kr/wiki/index.php 김영훈의 홈페이지] 잘 만들어진 위키 사이트로 인공지능 관련 정보가 있음 [[BR]]




반응형

+ Recent posts