<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/nishi_lab/">
    <title>nishi_lab</title>
    <link>http://w.atwiki.jp/nishi_lab/</link>
    <atom:link href="https://w.atwiki.jp/nishi_lab/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>nishi_lab</description>

    <dc:language>ja</dc:language>
    <dc:date>2010-02-17T09:55:01+09:00</dc:date>
    <utime>1266368101</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/24.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/16.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/22.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/17.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/21.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/19.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/20.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/nishi_lab/pages/2.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/24.html">
    <title>音声の復号化</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/24.html</link>
    <description>
      音声の復号化
プログラムup    </description>
    <dc:date>2010-02-17T09:55:01+09:00</dc:date>
    <utime>1266368101</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/16.html">
    <title>つかもと</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/16.html</link>
    <description>
      [[test]]
09/11/12
研究室用のwikiを作成
09/11/16
[[音声でのwavelet]]追加
09/11/17
仮信号でのweveletプログラム更新

[[仮信号でのwaveletプログラム]]
[[音声でのwavelet]]
[[音声の復号化]]
[[プログラミングのメモ]]
#pcomment()    </description>
    <dc:date>2010-02-17T09:54:05+09:00</dc:date>
    <utime>1266368045</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/22.html">
    <title>音声でのwavelet</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/22.html</link>
    <description>
      09/11/16
音声でのwavelet変換を行ってみた
とりあえず4点のドベシィウェーブレットで行った。

ほかのウェブレットや音声についても試す？→ハール、ガボール、点数増やす、男声との比較など
人間の声をモデルにしたWaveletを作る？→辞書的な？どやって？

----
09/01/14
プログラム使用手順
Cygwinを起動
startXと入力してXwindowを起動
gnuplotと入力してgnuplotを起動
load &#039;ファイル名.plt&#039;でgnuplot用のファイルを読み込む

09/02/14
パラメータを変化させ逆変換するプログラムを作成
逆変換した結果の振幅が小さくなるのはなぜ？    </description>
    <dc:date>2010-02-16T18:02:12+09:00</dc:date>
    <utime>1266310932</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/17.html">
    <title>上田</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/17.html</link>
    <description>
      09/12/08
AIBOとの通信が再び不安定になり、その後回復した。
今後の対策としてデスクタワーPC1台をAIBOサーバー専用マシンにして
AIBO－PC間がアドホックで正常に接続された状態を平日、休暇問わずに以後恒久的に保つことにする。
09/11/12
[[aibo_camera]]
現在の最新の更新
偶然かもしれないが本日やっと適当な値が出た（かも？）
Turn Triangle(x,y,z)=(0.154321,0.148148,0.000008) (m)
Turn Triangle(x,y,z)=(0.132883,0.072072,0.000012) (m)
Turn Triangle(x,y,z)=(0.176136,0.110795,0.000008) (m)
Turn Triangle(x,y,z)=(-0.012626,0.060606,0.000005) (m)
Turn Triangle(x,y,z)=(-0.066116,-0.010331,0.000006) (m)
Turn Triangle(x,y,z)=(0.087423,-0.018405,0.000008) (m)
Turn Triangle(x,y,z)=(0.086364,0.006061,0.000008) (m)
Turn Triangle(x,y,z)=(0.039809,0.003185,0.000009) (m)
Turn Triangle(x,y,z)=(0.001142,-0.004566,0.000006) (m)
Turn Triangle(x,y,z)=(-0.001592,0.047771,0.000009) (m)
Turn Triangle(x,y,z)=(-0.028169,0.017606,0.000010) (m)
Turn Triangle(x,y,z)=(-0.080097,-0.179612,0.000013) (m)
Turn Triangle(x,y,z)=(-0.160448,-0.567164,0.000020) (m)
Turn Triangle(x,y,z)=(-0.017442,0.127907,0.000010) (m)
Turn Triangle(x,y,z)=(-0.032828,0.176768,0.000014) (m)
Turn Triangle(x,y,z)=(-0.114583,-0.036458,0.000014) (m)
Turn Triangle(x,y,z)=(-0.025862,0.114943,0.000016) (m)
Turn Triangle(x,y,z)=(-0.103846,-0.215385,0.000021) (m)
Turn Triangle(x,y,z)=(-0.171569,-0.362745,0.000026) (m)
Turn Triangle(x,y,z)=(-0.229167,0.156250,0.000028) (m)
Turn Triangle(x,y,z)=(-0.209184,-0.081633,0.000028) (m)
Turn Triangle(x,y,z)=(-0.201220,-0.097561,0.000033) (m)
Turn Triangle(x,y,z)=(-0.550000,-1.500000,0.000135) (m)
Turn Triangle(x,y,z)=(-0.006757,-0.182432,0.000018) (m)
Turn Triangle(x,y,z)=(-0.808824,-3.323529,0.000079) (m)
Turn Triangle(x,y,z)=(-0.056122,-0.367347,0.000028) (m)
Turn Triangle(x,y,z)=(-0.171569,-0.068627,0.000026) (m)
Turn Triangle(x,y,z)=(-0.128788,-0.106061,0.000041) (m)
Turn Triangle(x,y,z)=(-0.638889,-3.388889,0.000150) (m)
Turn Triangle(x,y,z)=(-0.267857,-0.767857,0.000048) (m)
Turn Triangle(x,y,z)=(-1.#INF00,1.#INF00,1.#INF00) (m)
Turn Triangle(x,y,z)=(-0.132353,1.294118,0.000079) (m)
Turn Triangle(x,y,z)=(-0.583333,-2.500000,0.000150) (m)
Turn Triangle(x,y,z)=(-0.144737,-0.605263,0.000071) (m)
Turn Triangle(x,y,z)=(-0.170000,-0.240000,0.000054) (m)
Turn Triangle(x,y,z)=(-0.157407,-0.500000,0.000050) (m)
Turn Triangle(x,y,z)=(-0.137097,-0.338710,0.000044) (m)
Turn Triangle(x,y,z)=(-0.134615,-0.663462,0.000026) (m)
Turn Triangle(x,y,z)=(-0.197368,-0.092105,0.000036) (m)
あとはこれを理論値にどうやってもっていくかだが
カメラ操作と記録のプログラムとグラフ表示プログラムの間に
何らかの中間的なプログラムをいれることにする。
このような数字の羅列をなんとかしてグラフにできるような値にする案がほしいとこだ。
理想的なのはこんなかんじ
30
1 0 20 5
2 0 50 6
3 0 80 7
4 0 20 8
5 0 50 9
6 0 80 10
7 0 20 11
8 0 50 12
9 0 80 13
10 10 20 14
11 10 50 15
12 10 80 16
13 10 20 17
14 10 50 18
15 10 80 18
16 10 20 18
17 10 50 19
18 10 80 20
19 10 20 21
20 10 50 22
21 10 80 23
22 10 20 24
23 15 50 25
24 15 80 25
25 15 20 26
26 15 50 27
27 15 80 28
28 15 20 29
29 15 50 30
30 15 80 30
座標の数、X、Y、Zの順に4つの数値が並ぶファイルを作りたい。
ここに書いてあるのは理論値であり理想的な数値である。
単位はXYZすべてにおいて10でわりたい。
グラフにしやすいように10かけてある。
単位はすべてｍである。
更新日09.11.27

１．実空間座標推移グラフ絵画プログラム一応完成！
２．研究のゴールをとりあえず考えてみた（最終的なプログラムの内容）
1時間半ほど悩まされた事柄
VC++でfopenのファイルはexeと同じディレクトリに置け！！
でないとVCの上では動くがexeファイル実行したらエラーが出る。
それができないならフルパスがある。
fopenのフルパスは\を\\にするのだ！！

最終的なプログラムの内容
2台のカメラをつないで測定用プログラムを実行し、AIBOを歩かせる。
ただし予定は当初と変更して歩行方向を反対にする。
AIBOはカメラ側からスタートし、だんだん遠ざかる。
これは歩行中にAIBOがカメラに接触して測定結果が狂うことを防ぐためである。
このプログラムは実行後、AIBOが歩き出してから歩き終わるまでの間のみ
triangle.txtに検知したカメラ差分座標より実空間座標を書き出すから
プログラム実行と同時にAIBOの歩行を開始する必要はない。
歩行終了後、プログラムを終了し、
グラフチェック用のプログラムを実行する。
このプログラムは実行後、triangle.txtを、読み取り専用モードで、フルパスで読み込み、
グラフを絵画して、実空間座標の推移から歩行を評価する。
直線を使った折れ線グラフと評価結果の表示程度なら現在のｃ＋＋自作プログラムで描けた。
点数をつける基準は現在準備中。
たぶん歩行開始時と歩行終了時のｘ座標の推移を調べればよい。
たぶん歩行開始から歩行終了までの平均を取り、平均より多いものや少ないものの数の多さを調べればよい。
たぶん実空間座標のｘのずれは小さければ小さいほど良い。（正確な歩行）
たぶん実空間座標のｙのずれは大きければ大きいほど良い。（動物らしさ）
xを最大100点、yを最大100点とし、合計点÷2が最終的な評価となる。（評価A：辛め）
最終評価が60点以上のAIBOを合格とする。
AIBOがどうしても合格点に満たない場合、xとyの点数の比率を変えられるものとする。
例えばxが5点でもyが80点あればxを20％、yを80％の評価にすることで
5*0.2+80*0.8=1+64=65(合格)というような最終的な評価をつける。　（評価B：甘め）
評価Bでも不合格となったAIBOの追試、補講は一切受け付けないものとする。

今後の予定
フルパス問題は解決したので
グラフ絵画と評価プログラムはtriangle.txtをprojectフォルダから読み取り専用でフルパスでルートからもってくる。
このテキスト内の変数は全てdoubleなのでdoubleで読んだ後無理やりintに直すように
書き換えておく。
ただ、０以下のものを無理やり直すと全部０になるから、あらかじめ何倍かかけて適当な数値にしておく。
実質ｍ単位の測定結果だからｘやｙが１より大きいことはありえない。
更新日09.11.22



内容：算出した実空間座標(x,y,z)のグラフを作成するソフトの作成に入った。
最も簡単なC++のコンソールアプリで自作する。
GNUPLOTは複数のグラフを同時に表示できるのかわからないので却下。
このソフトのなかで動きの採点結果も出すことにする。
更新日09.11.21


内容：3次元座標の計算式の修正
予定：さらなる実験とノイズ対策
更新日09.11.17


内容：２つのカメラの座標の矛盾点を解決した
更新日09.11.14    </description>
    <dc:date>2009-12-08T13:21:56+09:00</dc:date>
    <utime>1260246116</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/23.html">
    <title>仮信号でのwaveletプログラム</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/23.html</link>
    <description>
      09/11/17
sin(a)+sin(2a)のドベシィ4点ウェーブレット変換
等高線で表してみた。
レベルが高くなると色の変化が2分の一になることが確かめられた    </description>
    <dc:date>2009-11-17T18:35:06+09:00</dc:date>
    <utime>1258450506</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/18.html">
    <title>aibo_camera</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/18.html</link>
    <description>
      あいぼのぺーじ
ソースコード最新のもの
//現在は接続カメラが２台であることが前提！！
//２台でのみ起動すること！
#include &lt;windows.h&gt;
#include &lt;dshow.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
#include &lt;math.h&gt;
#include &lt;qedit.h&gt;			// SampleGrabber用
#include &quot;list502.h&quot;
FILE *fp;
FILE *fpa;
FILE *fpb;
FILE *fpla;
FILE *fplb;
FILE *fpch;
void hope(int xzab,int yzab,int countab,int ca,int *absentx,int *absenty){
	printf(&quot;カメラ%dの重心は(%d,%d)\n&quot;,ca,xzab/countab,yzab/countab);
	if(ca==1)fprintf(fpa,&quot;カメラ%dの重心は(%d,%d)\n&quot;,ca,xzab/countab,yzab/countab);
	if(ca==2)fprintf(fpb,&quot;カメラ%dの重心は(%d,%d)\n&quot;,ca,xzab/countab,yzab/countab);
	*absentx=xzab/countab;
	*absenty=yzab/countab;
}
void triangle(int xa, int ya, int xb, int yb){
	double xap,yap,xbp,ybp;
	double rx,ry,rz;
	//カメラから受け取るそれぞれの重心座標
	double b=0.25;//2b=カメラ間距離
	double f=1;//カメラの焦点距離
	double onepixmet=0.00028;//1ピクセルは0.028cm、0.00028mとする
	xap=xa*onepixmet;
	yap=ya*onepixmet;
	xbp=xb*onepixmet;
	ybp=yb*onepixmet;
	//3D座標データをセットする
	rx=b*(xap+xbp)/(xap-xbp);
	ry=b*2*yap/(xap-xbp);
	rz=b*2*f/(xap-xbp);
	printf(&quot;Turn Triangle(x,y,z)=(%lf,%lf,%lf) (m)\n&quot;,rx,ry,rz);
	fprintf(fp,&quot;Turn Triangle(x,y,z)=(%lf,%lf,%lf) (m)\n&quot;,rx,ry,rz);
}

void lease (){
	//カメラ間の距離(m)
	int b=0.25;
	//カメラの焦点距離(m)
	int f=2;
	//カメラの重心格納
	int asentx=0;//x座標の重心
	int asenty=0;//y座標の重心
	int bsentx=0;
	int bsenty=0;
	IMG0 img00[10];
	IMG0 img01[10];
	int i,j;
	long n,n2;
	BYTE *buffer;
	BYTE *buf2;
	BYTE *buf3;
	BYTE *buffer2;
	BYTE *buf22;
	BYTE *buf32;
	ULONG cFetched;	
	AM_MEDIA_TYPE   amt;
	CoInitialize(NULL);								// COMの初期化
	// ---- キャプチャフィルタの準備 ----
	// キャプチャデバイスを探す
    ICreateDevEnum * pDevEnum = NULL;
	IEnumMoniker * pClassEnum = NULL;
	IBaseFilter  * pbf[10];
	HRESULT hr;
	IMoniker  * pMoniker[10];						// 最大カメラ数10	
    // デバイス列挙子を作成
    CoCreateInstance( CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC,
					  IID_ICreateDevEnum, (void ** ) &amp;pDevEnum);
    // ビデオキャプチャデバイス列挙子を作成
    pDevEnum -&gt; CreateClassEnumerator( CLSID_VideoInputDeviceCategory, 
										&amp;pClassEnum, 0);
    if ( pClassEnum == NULL ){
		printf(&quot;ビデオキャプチャデバイスは存在しません\n&quot;);
		pDevEnum -&gt; Release();
		CoUninitialize();
        return ;
    }
    // ビデオキャプチャデバイスのオブジェクトの
	// インタフェースを最大10個得る
	pClassEnum -&gt; Next(10, pMoniker, &amp;cFetched); 
	printf(&quot;カメラ数 %d 個\n&quot;, cFetched );
	for( i = 0; i &lt; cFetched ; i++){
		pMoniker[ i ] -&gt; BindToObject( 0, 0, IID_IBaseFilter, (void**)&amp;pbf[i] );	
		pMoniker[ i ] -&gt; Release();
		printf( &quot;%d 個目のIBaseFilter取得 \n&quot;, i+1 );
	}
	pDevEnum -&gt; Release();
	pClassEnum -&gt; Release();
	// ---- フィルタグラフの準備 ----
    // フィルタグラフを作り、インターフェースを得る
	// 複数のカメラを一括制御ならフィルタグラフは１つでいい
	IGraphBuilder * pGraph = NULL;
	IMediaControl * pMC = NULL;
    CoCreateInstance( CLSID_FilterGraph, NULL, CLSCTX_INPROC,
					  IID_IGraphBuilder, (void **) &amp;pGraph);
	pGraph -&gt; QueryInterface( IID_IMediaControl, (LPVOID *) &amp;pMC );
	// カメラ数分のキャプチャフィルタをフィルタグラフに追加
	for( i = 0 ; i &lt; cFetched ; i++){
		pGraph -&gt; AddFilter( pbf[ i ], L&quot;Video Device&quot;);	// 名前は任意
		printf( &quot;%d 個目のAddFilter完了 \n&quot;, i+1 );
	}
	// ---- グラバフィルタの準備 ----
	// グラバフィルタを作る、カメラの数だけ必要
	IBaseFilter     * pF[ 10 ];
	ISampleGrabber  * pGrab[ 10 ];					// これらは後で解放すること。
	ZeroMemory(&amp;amt, sizeof(AM_MEDIA_TYPE));
	amt.majortype  = MEDIATYPE_Video;
	amt.subtype    = MEDIASUBTYPE_RGB24;
	amt.formattype = FORMAT_VideoInfo; 
	for( i = 0 ; i &lt; cFetched ; i++){
		CoCreateInstance( CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, 
                      IID_IBaseFilter, (LPVOID *)&amp; pF[ i ]);
		pF[ i ]	-&gt; QueryInterface( IID_ISampleGrabber, (void **)&amp;pGrab[ i ] );
		// グラバフィルタの挿入場所の特定のための設定
		pGrab[ i ] -&gt; SetMediaType( &amp;amt );
		// グラバフィルタをフィルタグラフに追加
		pGraph -&gt; AddFilter(pF[ i ] , L&quot;SampGrab&quot;);
	}
	// ---- キャプチャグラフの準備 ----
	// キャプチャグラフを作る、カメラの数だけ必要  
	ICaptureGraphBuilder2 * pCapture[10];			// これらは後で解放すること。
	for( i =0 ; i &lt; cFetched ; i++){				// 最大カメラ数10
		CoCreateInstance( CLSID_CaptureGraphBuilder2 , NULL, CLSCTX_INPROC,
				      IID_ICaptureGraphBuilder2, (void **) &amp;pCapture[ i ] );
		// フィルタグラフをキャプチャグラフに組み込む
		pCapture[ i ] -&gt; SetFiltergraph( pGraph );
		// キャプチャグラフの設定、グラバをレンダリング出力に設定
		pCapture[ i ] -&gt; RenderStream (NULL, NULL,
									pbf[ i ] , NULL, pF[ i ]);
		printf( &quot;%d 個目のキャプチャグラフ完了 \n&quot;, i+1 );
	}
	// ---- 表示ウィンドウの準備 ----
	//IMG0	img00[10];								// 最大10ウインドウ	
	VIDEOINFOHEADER * pVideoHeader;
	char cbuf1[200];
	char cbuf2[200];
	gr_reg();
	// 表示ウィンドウの定義
	for( i =0 ; i &lt; cFetched ; i++){
		// ビットマップ情報の取得	
		pGrab[ i ] -&gt; GetConnectedMediaType( &amp;amt ); 
		// ビデオ ヘッダーへのポインタを獲得する。
		printf( &quot;カメラ%d amt.lSampleSize = %d (byte)\n&quot;, i+1, amt.lSampleSize );
		pVideoHeader = (VIDEOINFOHEADER * )amt.pbFormat;
		// ビデオ ヘッダーには、ビットマップ情報が含まれる。
		// ビットマップ情報を BITMAPINFO 構造体にコピーする。
		img00[ i ].bih = pVideoHeader-&gt;bmiHeader;
		//後で修正する
		if(i==0){
			n = img00[i].bih.biSizeImage;
			printf(&quot;long n=%d\n&quot;,n);
			buffer = (BYTE *)malloc( n );
			buf2 = (BYTE *)malloc( n );
			buf3 = (BYTE *)malloc( n );
		}
		if(i==1){
			n2 = img00[i].bih.biSizeImage;
			printf(&quot;long n2=%d\n&quot;,n2);
			buffer2 = (BYTE *)malloc( n2 );
			buf22 = (BYTE *)malloc( n2 );
			buf32 = (BYTE *)malloc( n2 );
		}
		printf( &quot;width = %d , height %d , color %d \n&quot;,
				img00[ i ].bih.biWidth, 
				img00[ i ].bih.biHeight, 
				img00[ i ].bih.biBitCount );
		img00[ i ].lpBmpData = (BYTE *)malloc( img00[ i ].bih.biSizeImage );
		//-------------------------------------------------
		img00[ i ].hi = (HINSTANCE)GetWindowLong( HWND_DESKTOP, GWL_HINSTANCE );
		img00[ i ].x = i*400; img00[ i ].y = 0;
		img01[ i ].bih = pVideoHeader-&gt;bmiHeader;
		printf( &quot;width = %d , height %d , color %d \n&quot;,
				img01[ i ].bih.biWidth, 
				img01[ i ].bih.biHeight, 
				img01[ i ].bih.biBitCount );
		img01[ i ].lpBmpData = (BYTE *)malloc( img01[ i ].bih.biSizeImage );
		img01[ i ].hi = (HINSTANCE)GetWindowLong( HWND_DESKTOP, GWL_HINSTANCE );
		img01[ i ].x = i*400; img01[ i ].y = 300;
		gr_init( &amp;img00[ i ] );						// 表示ウィンドウを作る
		gr_init( &amp;img01[ i ] );
		
		wsprintf( cbuf1, &quot;カメラ %d / %d&quot;,i + 1 , cFetched );
		SetWindowText( img00[ i ].hwnd, cbuf1 );
		wsprintf( cbuf2, &quot;カメラsa %d / %d&quot;,i + 1 , cFetched );
		SetWindowText( img01[ i ].hwnd, cbuf2 );
	}
	img00[0].lpBmpData=buffer;
	img00[1].lpBmpData=buffer2;
	img01[0].lpBmpData=buf2;
	img01[1].lpBmpData=buf22;
	// ----レンダリング開始,終了 ----
	pMC -&gt; Run();// レンダリング開始
	double s;
	for( i =0 ; i &lt; cFetched ; i++)
		pGrab[ i ] -&gt; SetBufferSamples(TRUE);		// グラブ開始
	int nn = 0;	// グラブ回数のカウント、意味はない
	int xz;//画面のx座標
	int yz;//画面のy座標
	int rgb;
	int xza,yza;//カメラAの重心の座標
	int xzb,yzb;//カメラBの重心の座標
	int counta,countb;
	double siki,siki2=1;
	printf(&quot;開始？&quot;);
	getch();
	printf(&quot;\n&quot;);
	while(1){										// 0.5秒に１回グラブ
		for( i =0 ; i &lt; cFetched ; i++){
			if(i==0) hr = pGrab[ i ] -&gt; GetCurrentBuffer((long *)&amp;(img00[ i ].bih.biSizeImage), (long *)buffer);
			if(i==1) hr = pGrab[ i ] -&gt; GetCurrentBuffer((long *)&amp;(img00[ i ].bih.biSizeImage), (long *)buffer2);
		}
			//差分処理の追加はここ
			//ここからカメラAの処理
			s=0.0;
			xz=0;
			yz=0;
			xza=0;
			yza=0;
			rgb=0;
			counta=0;
			for(j=0;j&lt;(int)n;j++){
				buf2[j]=fabs((double)(buffer[j]-buf3[j]));
				siki=buf2[j];
				//fprintf(fpch,&quot;カメラA座標チェック%d(x,y)=(%d,%d)\n&quot;,j,xz,yz);
				if(siki&gt;200) {
					fprintf(fpla,&quot;カメラA座標(x,y)=(%d,%d) RGB=%dの差分%lf\n&quot;,xz,yz,rgb,siki);
					
					xza=xza+xz-160;
					yza=yza+120-yz;
					counta++;
				}
				//ここで重心を計算
				if(yz==240 &amp;&amp; rgb==2){xz++; yz=0;}
				switch(rgb){
					case 0: 
						rgb++;
						break;
					case 1:
						rgb++;
						break;
					case 2:
						rgb=0;
						yz++;
						break;
				}
				
				
				
				s=s+buf2[j];
				
			}
			printf(&quot;カメラAの差分値%lf\n&quot;,s/n);
			if(counta!=0) {
				//dfx,dfy,counta,ca
				hope(xza,yza,counta,1,&amp;asentx,&amp;asenty);
			}
			//ここからカメラBの処理
			s=0.0;
			xz=0;
			yz=0;
			xzb=0;
			yzb=0;
			rgb=0;
			countb=0;
			for(j=0;j&lt;(int)n2;j++){				
				buf22[j]=fabs((double)(buffer2[j]-buf32[j]));
				siki=buf22[j];
				//fprintf(fpch,&quot;カメラB座標チェック%d(x,y)=(%d,%d)\n&quot;,j,xz,yz);
				if(siki&gt;200){
					fprintf(fplb,&quot;カメラB座標(x,y)=(%d,%d) RGB=%dの差分%lf\n&quot;,xz,yz,rgb,siki);
					
					xzb=xzb+xz-160;
					yzb=yzb+120-yz;
					countb++;
				}
				//ここで重心を計算
				if(yz==240 &amp;&amp; rgb==2){xz++; yz=0;}
				switch(rgb){
					case 0: 
						rgb++;
						break;
					case 1:
						rgb++;
						break;
					case 2:
						rgb=0;
						yz++;
						break;
				}
				
				s=s+buf22[j];
				
			}
			printf(&quot;カメラBの差分値%lf\n&quot;,s/n2);
			if(countb!=0){
				hope(xzb,yzb,countb,2,&amp;bsentx,&amp;bsenty);
			}
			//asentx=0;//強制テスト
			if(asentx!=0 &amp;&amp; asenty!=0 &amp;&amp; bsentx!=0 &amp;&amp; bsenty!=0){
				fprintf(fpch,&quot;送信座標チェックA(x,y)=(%d,%d) B(x,y)=(%d,%d)\n&quot;,asentx,asenty,bsentx,bsenty);
				triangle(asentx,asenty,bsentx,bsenty);
			}
			//開放処理
			for(i =0 ; i &lt; cFetched ; i++){
				InvalidateRect( img00[ i ].hwnd, NULL, FALSE);
				InvalidateRect( img01[ i ].hwnd, NULL, FALSE);
			}
		printf(&quot;グラブ  n = %d\n&quot;, nn++ );
		if( kbhit() ){
			getch();								// kbhitで取得したキーの破棄
			pMC -&gt; Pause();
			printf( &quot;グラブ停止：終了 -- q 、再開 -- その他のキー\n&quot; );
			if(getch() == &#039;q&#039;)
				break;
			pMC -&gt; Run();
		}
		CopyMemory( buf3, buffer ,n);
		CopyMemory( buf32,buffer2,n2);
		//Sleep(100);
	}
	// ---- 終了処理 ---- 
    // インターフェースのリリース
	for( i =0; i &lt; cFetched ; i++){ 
		pGrab[ i ] -&gt; Release();
		pF[ i ] -&gt; Release();
		pCapture[ i ] -&gt; Release();					// キャプチャグラフ用
		pbf[ i ] -&gt; Release();						// キャプチャフィルタ用
		free( img00[ i ].lpBmpData );
		free( img01[ i ].lpBmpData );
	}
    pMC -&gt; Release();								// フィルタグラフ用
    pGraph -&gt; Release();
	// COMのリリース
	CoUninitialize();
}
void main()
{
	fp=fopen(&quot;triangle.txt&quot;,&quot;w&quot;);
	fpa=fopen(&quot;acamera.txt&quot;,&quot;w&quot;);
	fpb=fopen(&quot;bcamera.txt&quot;,&quot;w&quot;);
	fpla=fopen(&quot;iventloga.txt&quot;,&quot;w&quot;);
	fplb=fopen(&quot;iventlogb.txt&quot;,&quot;w&quot;);
	fpch=fopen(&quot;allcheck.txt&quot;,&quot;w&quot;);
	printf(&quot;接続されているカメラが２台であることを確認してください(qで終了)\n&quot;);
	if(getch()==&#039;q&#039;) return;
	lease();
	fclose(fp);
	fclose(fpa);
	fclose(fpb);
	fclose(fpla);
	fclose(fplb);
	fclose(fpch);
	return;
}    </description>
    <dc:date>2009-11-14T12:01:31+09:00</dc:date>
    <utime>1258167691</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/21.html">
    <title>waveletプログラム</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/21.html</link>
    <description>
      sin関数のデータ1024点をwavelet変換してみた

09/11/13更新
ソースコード、データup    </description>
    <dc:date>2009-11-13T15:18:17+09:00</dc:date>
    <utime>1258093097</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/19.html">
    <title>プログラミングのメモ</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/19.html</link>
    <description>
      &amp;bold(){動的配列の作成}
　・ 作成　：　new データ型［サイズ］；
　・ 破棄　：　delete ［］ データへのポインタ； 
つくったら消さなきゃ、メモリの有効活用はできないよ！

&amp;bold(){整数を文字列に変換する}
sprintf(str,&quot;%sの%sだって%sよ&quot;,str1,str2,str3);
で、strに連結した文字列が入ってる！

&amp;bold(){小数点の切捨て}
書式 	double floor( double x )
機能 	小数点の切り捨て
引数 	double x : 切り捨てする元の値
戻り値 	小数点以下を切り捨てした値    </description>
    <dc:date>2009-11-13T14:05:17+09:00</dc:date>
    <utime>1258088717</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/20.html">
    <title>コメント/つかもと</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/20.html</link>
    <description>
      -コメントテスト - つかもと 2009-11-12 16:32:06  
-フォームからコメントを入力してください - つかもと 2009-11-12 16:32:41  
-コメントテストです。 - にし 2009-11-12 17:55:44  
-完璧！ - つかもと 2009-11-12 17:57:23      </description>
    <dc:date>2009-11-12T17:57:23+09:00</dc:date>
    <utime>1258016243</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/nishi_lab/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/nishi_lab/pages/2.html</link>
    <description>
      **メニュー

-[[トップページ]]
-[[射庭]]
-[[上田]]
-[[つかもと]]

----

**リンク
-[[@wiki&gt;&gt;http://atwiki.jp]]
-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]

**他のサービス
-[[無料ホームページ作成&gt;&gt;http://atpages.jp]]
-[[無料ブログ作成&gt;&gt;http://atword.jp]]
-[[2ch型掲示板レンタル&gt;&gt;http://atchs.jp]]
-[[無料掲示板レンタル&gt;&gt;http://atbbs.jp]]
-[[お絵かきレンタル&gt;&gt;http://atpaint.jp/]]
-[[無料ソーシャルプロフ&gt;&gt;http://sns.atfb.jp/]]

// リンクを張るには &quot;[&quot; 2つで文字列を括ります。
// &quot;&gt;&quot; の左側に文字、右側にURLを記述するとリンクになります


//**更新履歴
//#recent(20)

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2009-11-12T15:53:58+09:00</dc:date>
    <utime>1258008838</utime>
  </item>
  </rdf:RDF>
