研究の掃溜ノオト
since 2011/2/13 知能ロボ研究の合間に思ったこととか書いてます。
カテゴリー「実装」の記事一覧
- 2025.02.02
[PR]
- 2011.07.24
Processing で Kinect プログラミング!
- 2011.07.23
ArduinoとProcessingを用いてCdSセルからの情報をPCに表示する
- 2011.07.23
ガウス分布に従って画像をサンプリング
Processing で Kinect プログラミング!
日経ソフトウエアに今月から連載されている「はじめてのKinectプログラミング」を参考にしてProcessing で Kinect をプログラミングする環境を整えてみました。といっても必要なソフトをインストールしただけですが^^;
PR
ガウス分布に従って画像をサンプリング
してみました!
はい、ただ単純にマウスポインタを中心として適当な分散をもつガウシアンによって画像から適当にピクセルをサンプリング。そしてそれを正方形に並べて画像を再構成しました!
なんでこんなモノを作ったかというと人間の目には中心窩というものがありこれを実装して画像処理をしてみたいなーというのが元々の動機です。
簡単に説明すると中心窩というのは網膜の神経細胞がたくさん集まっている所っでそこから離れるとだんだん神経細胞が少なくなっています。実は私たちの目が普段見ている世界はマンションの覗き穴から見ているように歪んでいるのです!それを脳内で適当に処理して普通の景色としてみているのです。
まぁそんなこんなで実装してみたんですが、ちょっと自慢なのはガウシアンでサンプリングした点を正方形に並べるアルゴリズムですかね(・∀・)
そこら辺はソースを見てもらえたらと思います。
簡単に説明するとx軸とy軸でソートしてそれぞれ10組に分けて割当たった(組, 組)を正方形の座標として用いています(^_^;)
実際に正方形に並べた画像です。
うーん、わかりにくい。
興味を持った人はソースを張るので実際に動かしてみてください。
開発環境はPython です。
以下ソース
-------------------------------------------------
はい、ただ単純にマウスポインタを中心として適当な分散をもつガウシアンによって画像から適当にピクセルをサンプリング。そしてそれを正方形に並べて画像を再構成しました!
なんでこんなモノを作ったかというと人間の目には中心窩というものがありこれを実装して画像処理をしてみたいなーというのが元々の動機です。
簡単に説明すると中心窩というのは網膜の神経細胞がたくさん集まっている所っでそこから離れるとだんだん神経細胞が少なくなっています。実は私たちの目が普段見ている世界はマンションの覗き穴から見ているように歪んでいるのです!それを脳内で適当に処理して普通の景色としてみているのです。
まぁそんなこんなで実装してみたんですが、ちょっと自慢なのはガウシアンでサンプリングした点を正方形に並べるアルゴリズムですかね(・∀・)
そこら辺はソースを見てもらえたらと思います。
簡単に説明するとx軸とy軸でソートしてそれぞれ10組に分けて割当たった(組, 組)を正方形の座標として用いています(^_^;)
実際に正方形に並べた画像です。
うーん、わかりにくい。
興味を持った人はソースを張るので実際に動かしてみてください。
開発環境はPython です。
以下ソース
-------------------------------------------------
import pygame
import random
from pygame.locals import *
SCR_W = 500
SCR_H = 400
IMG_X = 400
IMG_Y = 300
scale1 = 20
look = []
for i in range(scale1):
look.append([])
for j in range(scale1):
look[i].append([0,0])
xeye = []
for i in range(scale1*scale1):
xeye.append(0)
yeye = []
for i in range(scale1*scale1):
yeye.append(0)
def xfold(val):
if val > IMG_X:
return IMG_X
if val < 0:
return 0
return int(val)
def yfold(val):
if val > IMG_Y:
return IMG_Y
if val < 0:
return 0
return int(val)
def main():
pygame.init()
screen = pygame.display.set_mode( (SCR_W, SCR_H) )
pygame.display.set_caption('Hello pygame')
image = pygame.image.load('img.jpg')
image = image.convert()
imagerect = image.get_rect()
while 1:
screen.blit(image, imagerect)
for i in range(scale1*scale1):
xeye[i] = xfold(random.gauss(pygame.mouse.get_pos()[0],30))
yeye[i] = yfold(random.gauss(pygame.mouse.get_pos()[1],30))
xeye.sort()
yeye.sort()
for i in range(scale1):
for j in range(scale1):
look[i][j][0] = xeye[i*scale1+j]
look[i][j][1] = yeye[j*scale1+i]
for i in range(scale1):
for j in range(scale1):
pygame.draw.rect(screen, screen.get_at(look[i][j]),(400+i*5,300+j*5,5,5))
pygame.display.flip()
for event in pygame.event.get():
if event.type == QUIT:
return
if (event.type == KEYDOWN and event.key == K_ESCAPE):
return
if __name__ == '__main__': main()