//templete.v テンプレートマッチング用モジュール

#define HANKEI 64    //テンプレート画像の半径
#vios mutex result off min depend_on_first

module findit(i_r, i_g, i_b, t_r, t_g, t_b:input,result:parameter)
int i_r on pixel cache HANKEI;
int i_g on pixel cache HANKEI;
int i_b on pixel cache HANKEI;
int t_r on all;
int t_g on all;
int t_b on all;
int result[3];
{

	result[0] = 99999;                /* とりあえず大きい数字 */

    parallel{
	int i, j, cnt, d, dd;
	int x, y;

	x = hotx(i_r);
	y = hoty(i_r);

    if(x%4 == 0 && y%4 == 0 &&       /* 単なる間引き */
	   x>HANKEI && xHANKEI && y< height(i_r)-HANKEI){
		cnt = 0; d = 0;
		for(i=1;i < HANKEI*2-1;i++)
	    		for(j=1;j < HANKEI*2-1;j++){
				cnt++;
				dd = i_r[i-HANKEI][j-HANKEI] - t_r[i][j];
				if(dd<0) dd = -dd;
				d += dd;
				dd = i_g[i-HANKEI][j-HANKEI] - t_g[i][j];
				if(dd<0) dd = -dd;
				d += dd;
				dd = i_b[i-HANKEI][j-HANKEI] - t_b[i][j];
				if(dd<0) dd = -dd;
				d += dd;
			}
		if(cnt){
			d /= cnt;
 			if(d < result[0]){
				result[0] = d;
				result[1] = x-HANKEI;
   	    			result[2] = y-HANKEI;
			}
		}
	  }
	}
}