Processing의 Kinect 라이브러리인 SimpleOpenNI를 사용하면 정말로 간단하면서 다양한 키넥트 어플리케이션을 구현할 수 있습니다. 이와 관련된 책들도 현재 많이 나오고 있습니다. 거기서 제일 처음 나오는 프로젝트들 중 하나가 바로 가장 근접점을 뽑아내는 것입니다. 이를 통해서 메모리로부터 어떤 픽셀이 가까운지를 감지할 수 있는 중요한 예제이기 때문이지요. 잠깐 요약을 하자면 픽셀의 데이터는 1차원적으로 쭉 늘어진 배열에서 뽑아오는 것이기 때문에 그 중 하나를 뽑으려면 그것에 관한 정의를 잘 내려야 한다고 했었지요. 이번에도 관련 예제를 다뤄보겠습니다. 우선 라이브러리 삽입 및 자료형 정의가 전제되어야 하겠습니다.그리고 사전에 setup에 들어갈 부분은 항상 맨먼저 언급되었던 내용이니까 ..
혹시 제가 이 파트에서 제일 처음으로 쓴 글을 아시는 분이 계실까요? 그냥 무작정 썼던 글이 바로 RGBDemo라는 프로그램에 관한 글이었습니다. 그때가 올해 1월이었는데 벌써 7월이 오는군요. 오늘 소개해드릴 프로그램은 그 RGBDemo를 만들었던 manctl에서 만든 Skanect라는 겁니다. 사실 이 Skanect는 오픈소스 라이브러리인 Point Cloud Library를 기반으로 동작합니다. 그리고 내부 dll 파일을 보시면 알겠지만 내부적으로 OpenCV 라이브러리도 사용된 것을 확인할 수 있습니다. 우선 공식 사이트에서 언급하는 Skanect의 기능입니다. 보시면 아시겠지만 전체적으로 실시간 모델링을 해주는 역할을 하고 있습니다. 제작사에서는 이 기능을 3D scanner라고 언급하고 있습니..
지난 포스트에서는 프로세싱을 통해서 받은 이미지에서 각각의 RGB값을 취하는 것에 대해 알아봤습니다. 실제로 기본적인 코드를 바탕으로 2~3줄 정도 추가해준 것에 비해 얻을 수 있는 정보가 늘어나지요. 코드 자체도 어렵지 않고요. 이번에 해볼 내용은 SimpleOpenNI 라이브러리에서 제공하는 depthmap 속성을 이용해서 DepthImage로부터 사용자까지의 거리를 구하는 식을 구해보고자 합니다. 전체적인 형식은 전의 코드와 비슷합니다. 우선은 라이브러리를 추가해주고 SimpleOpenNI형 자료형을 선언해줍니다. 그 후에 다음과 같이 코드를 구성해봅니다. 자 이제 mousePressed부분을 채워야 하는데 고려해볼 사항이 있습니다. 전 시간에 잠깐 말한 바로는 키넥트가 컴퓨터로 데이터를 넘길때는 ..
다시 돌아온 프로세싱입니다. 이번 포스트에서 해볼 내용은 마우스로 특정 포인트를 찝었을 때 그 픽셀의 RGB값을 구하는 어플입니다. 지난 포스트에서는 draw라는 함수를 통해서 해당 윈도우에 Depth와 Color를 출력하는 것을 구현했었는데 이번 것도 거의 비슷합니다. 다만 마우스를 클릭했을 때의 함수가 필요한데 프로세싱에서 참 편리하게도 그냥 mousePressed라는 함수를 가지고 있습니다. 그래서 기존 함수를 그대로 이용하면서 해당 코드만 가져오겠습니다. 모르시는 분을 위해서 간단하게 설명하자면 우선은 Setup부분에서 Kinect에서 필요한 기능을 다 불러와야 합니다. 마치 장치를 initialize시키는 것처럼 말이죠. 이런 구조는 보통 게임 구현시 나타납니다. 그도 그럴것이 Processin..
지난 포스팅에서도 누차 강조를 했지만 키넥트는 단순히 이미지를 받아오고 내부에서 처리해서 컴퓨터에 보내주는 역할을 합니다. 그 정보를 pixelData에 담아서 넘겨주는 식으로 동작하고, 여기에 들어있는 정보를 어떻게 처리하냐에 따라서 색상을 마음대로 처리할 수 있었습니다. 이렇게 나오는 ColorStream을 이미지 파일로 바꿀 수 있을까요? 방법은 PngBitmapEncoder나 JpegBitmapEncoder를 사용하면 됩니다. 이 프로젝트를 한번 같이 따라가고자 합니다. 우선 맨처음 ColorStream관련 포스트에서 다뤄던 프로젝트를 계속 이어서 하겠습니다. 자 우선 xaml상에서는 우리의 상을 보여줄 이미지와 사진을 찍을 때를 표현할 버튼이 필요합니다. 그래서 다음과 같이 표현해줍니다. 그러면..
까먹기 전에 하나 올립니다. 우연치않게 구글링하다가 찾은 사이트가 바로 이 FireFly Experiment 입니다. 불나방 실험이라.. 뭔가 특이한 실험입니다. 사실 이 사이트는 Rhino3D 라는 CAD용 툴에 아두이노를 연결시키는 plug-in을 제공하고 있습니다. 그런데 더욱 놀라운 것은 Kinect와 연결한 플러그인도 제공하고 있습니다. 다음이 Kinect와 아두이노 그리고 Rhino3D를 이용한 예시입니다. 이거보니까 갑자기 땡기네요.. 아무튼 외국에서는 이런식으로 다양한 소프트웨어끼리 융합시켜서 개발하는 방식이 많이 발전하고 있고, 굳이 개발자에 한정되어 있는것이 아니라 인터렉션을 연구하는 디자이너가 사용하는 빈도가 더 높다고 합니다. 아무튼 참고하셨으면 좋겠네요.
계속해서 Unity에 대한 이해를 공부하고 있습니다. 다양한 실험들을 해보고 있습니다. 이번에 한 내용은 무료로 배포되는 군인 캐릭터에 Joint 정보를 입력해서 제어하게끔 하는 것이 목적입니다. 위의 동영상에서는 Hip-Center에만 Joint 값을 줘서 앞뒤로 이동하는 것을 확인할 수 있습니다. 실상 Unity3D에서 배포되는 캐릭터의 텍스쳐를 열어보면 각 관절에 대한 정보가 다 삽입되어 있습니다. 그래서 거기에 Kinect로부터 받아온 정보를 그대로 입히면 되는 것이죠. 그런데 이상하게 이 Spine 에다가 값을 주기만 하면 reference 오류가 발생하네요. 원인은 찾는 중입니다 ㅠ 그게 해결된다면야 팔동작도 인식하는 캐릭터가 되는 것이지요.
우연치 않게 Imagine Cup에 지원해서 라운드 2에 진출했습니다. 여기서 잘하면 바로 호주로 가는 것이죠. 물론 라운드2로 올라가면서 받는 상품이 있었습니다. 바로 Kinect for Windows 와 Gadget Accelerator Kit 입니다. 이중에서 Kinect for Windows는 우리나라에 출시가 안되었다고 일단 엑박용 키넥트를 준다고 하는데 어찌된지는 모르겠네요. 아무튼 당장 써볼 수 있는 내용이 GAK 입니다. 그런데 실은 이 GAK라는게 확인해보니까 Unity3D를 기반으로 한 소스였더군요. 2라운드 제출물도 이 Unity를 사용해서 제출하라는 공지도 떴더군요.. 지금까지 완전 XNA나 WPF 쪽으로 공부를 해왔는데... 완전 도로아미타불이 되어버린 기분입니다.. 아무튼 이번 ..
지난 포스팅에서는 순전히 게임에 대한 이야기만 다루고 Kinect의 기능을 활용하는 것은 없었었는데 이번 포스팅에서 한번 다뤄보도록 하겠습니다. 물론 지난 시간에 생성한 프로젝트를 그대로 활용해서 말이지요. 우선 다들 알다시피 Kinect를 활성화시키기 위해서는 Kinect 변수를 초기화시켜줘야 합니다. 이제 LoadContent 부분에서 쓸 기능들에 대한 활성화를 시켜줘야 합니다. 지난 포스팅에서 잠깐 언급했었지만 이번 프로젝트에서는 Color, Depth, Skeleton에 대한 정보를 모두 사용한다고 했습니다. 따라서 그에 따른 기능들을 활성화시켜주면 됩니다. 이제는 각 기능에 대한 활성화단계를 거쳤으니 어떤 이벤트를 사용하느냐를 결정해줘야 합니다. 사실 정식버전이 나오기 이전 베타버전에서는 위와 ..
증강 현실이란 개념이 등장한 것은 얼마 안됬습니다. 하지만 오늘날에는 이를 구현한 어플들이 많이 등장하고 있습니다. 가까운 예로는 오브제라는 앱이 있습니다. 카메라를 이용해서 건물을 비추면 건물에 입주해있는 상점에 대한 정보를 보여주는 기능을 하는데 현실 공간속에 임의의 정보를 실시간으로 띄워주면서 조금더 삶을 풍성하게 해주지요. 이런 걸 키넥트로도 할 수 있습니다. 이번 프로젝트의 이름은 CloudGame입니다. 사람이 게임속에 직접 들어가서 구름을 움직일 수 있는 프로젝트이죠. 물론 매우 복잡한 프로젝트이기에 여러차례로 나눠서 언급하고자 합니다. 참고로 여기에는 앞 포스팅에서 언급했던 ColorFrame, DepthFrame, SkeletonFrame이 전부 사용됩니다. 일단 XNA 프로젝트로 게임을..
사실 지난 포스팅을 끝으로 SDK 관련 내용은 안 다루려고 했는데.. 하는 일이 계속 SDK를 공부하게끔 만듭니다.( 참 이번에 Imagine Cup 2012 키넥트분야로 2라운드에 진출했습니다.) 뭐 아무튼 계속 공부해야 될 듯하네요. 지난 시간까지 Voice Recorder를 만들어서 그걸 테스트해보는 프로젝트까지 진행했습니다. 이번 시간에 할 내용은 진짜 본격적으로 사람을 추적할 수 있는 Skeletal Tracking을 XNA와 곁들여서 진행해보고자 합니다.물론 이전에 언급한 Color나 Depth에 대한 정보도 중요하긴 하지만 NUI(Natural User Interface)를 구성하는 가장 근본적인 요소는 바로 Skeleton 입니다. 일단 사람을 인지해야 사람의 손을 추적하거나 모션을 인식할..
요 근래에 바쁜일이 많았습니다. 물론 이 공부도 중요한데 다른 일들을 미룰 수가 없더군요. 일단 이번 포스팅에서는 XNA를 통해서 Voice Recorder를 만드는 프로젝트를 해보고자 합니다. 물론 이 내용은 Rob Miles 교수님이 쓰신 Using Kinect for Windows with XNA 의 내용입니다. 우선 들어가기에 앞서서 키넥트에서의 음성처리를 언급해보고자 합니다.앞에서도 이야기 했었지만 키넥트에는 4개의 마이크 어레이가 내장되어서 이로써 소리가 나는 방향과 강도를 정확하게 측정할 수 있습니다. 그리고 키넥트를 연결하면 기본적으로 다음과 같이 인식됩니다. 여기서도 마이크 배열로 존재한다는게 보이네요. 참고로 마이크이기 때문에 우리가 말하는 것도 다 인지가 됩니다. 키넥트는 이렇게 받아..
드디어 DepthStream에 관한 세번째내용이군요. 지난 포스팅을 통해서 손가락을 추적할 수 있는 원리에 대해 잠깐 언급해봤습니다. 이제 이걸 토대로 마우스 커서를 만들어보고자 합니다. 그 전에 앞서서 Resolution을 조절하는 방법에 대해서 언급해보고자합니다. 기존 프로젝트를 수정하는 선에서 진행하겠습니다. 전의 결과물을 보셨으면 아시겠지만 명암의 차이를 조금 알아보기가 힘들었지요. 이 결과에 영향을 끼치는 부분은 바로 여기입니다. 5bit씩 shift되어 있는 부분을 아래와 같이 4bit만 shift하면 어떻게 될까요? 뭔가 뚜렷해진 결과가 보이시나요? 사실 정확한 결과는 위의 사진이 맞습니다. 분명 16bit중 5bit shift를 시켜야 컬러로 다시 뿌릴 수 있는 정보로 받는거지요. 하지만 ..
- Total
- Today
- Yesterday
- Kinect SDK
- dynamic programming
- Windows Phone 7
- DepthStream
- arduino
- 딥러닝
- SketchFlow
- reward
- Distribution
- 파이썬
- 강화학습
- Kinect for windows
- End-To-End
- RL
- Expression Blend 4
- Pipeline
- Offline RL
- Variance
- windows 8
- TensorFlow Lite
- processing
- Gan
- ai
- ColorStream
- PowerPoint
- Policy Gradient
- Off-policy
- Kinect
- bias
- 한빛미디어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |