第4段階: Neural net, LERなしの結果。

 帰ってきた Super resolution PIV (2) (8/29/01)

Sub-pixelを導入して、第4段階までerrorチェック(Neural net , LER)なしで得られたのが上の結果。左上隅など、過誤ベクトルが見られるもののerrorチェックなしでこの結果は凄い。いままでなら目立つくらいの過誤ベクトルが出た。やはり、保険の意味でNeural netやLERを段階ごとに行うのが良い。以前プログラム経験済みなので、半日あればできそう。
朝までやって結果に絶望したその日、計算時間の改善方法を電車の中で思いついた。各段階ごとに配列は入れ子式に数が増える。この事に着目して、はじめから最大の配列を確保しておく事で動的な管理から解放される。入れ子式だから、4つ飛ばしに行、列を読めば一番荒い配列になり、これを3,2,1と読み込みを行うことでそれぞれで異なる大きさの配列になる。(説明が悪い!)下に段々と配列を小さく使う例題を書く。
#include <stdio.h>
#include <math.h>
main(){
	int i,j,step,n;
	int A[5][5];
	for(step=0;step<3;step++){
	n=pow(2,step);
		for(i=0;i < 5;i+=n)
			for(j=0;j < 5;j+=n){
	A[i][j]=1;
			}
		}
	}
	return(0);
}
こうすると、それぞれ5×5、3×3、2×2の配列ができる。動的に書けば、
#include <stdio.h>
#include <math.h>
#include <iostream.h>
main(){
	int i,j,step,n;
	int **A;
	for(step=0;step<3;step++){
		n=pow(2,step);
	
	/*動的確保開始*/
		A = new int *[n];
		for(i=0;i < n ;i++){
		A[i] = new int [n];
		}
	
	for(i=0;i< n ;i++){
		for(j=0;j < n;j++){
	A[i][j]=1;
		}
	}
	/*動的確保終了*/
		for(i=0;i< n ;i++){
		delete A[i];
		}
		delete [] A;
	}
}
だるい!書いていてわけわからんようになる。これで計算時間も解決するはず(書くのちょっと面倒、、、8月の最後やしなぁ、、、もう少しだけ時間を、、、、真値と上のベクトルの結果比べたり、実際のデータで検証まだヤシ、、、、やることいっぱい。でも目処が立って道が見えてなんか退屈。見ないと不安で寝られへんから嫌。まぁ後少し、それにしても長い括弧やなぁ。)。


*|top_page |後ろへ|次へ |*