add tracking benchmark
[IRC.git] / Robust / src / Benchmarks / oooJava / tracking / IYLR.java
1 public class IYLR {
2
3     
4     /* current processing image related */
5     float[] m_image;
6     int m_rows;
7     int m_cols;
8     
9     /* results related */
10     float[] m_result;
11     int m_rows_rs;
12     int m_rows_re;
13     int m_cols_r;
14     
15     /* id indicating the piece # */
16     int m_id;  
17     int m_range;
18     
19     /* constructor */
20     public IYLR(int id,
21                 int range,
22                 float[] image,
23                 int rows,
24                 int cols) {
25       this.m_id = id;
26       this.m_range = range;
27       this.m_image = image;
28       this.m_rows = rows;
29       this.m_cols = cols;
30     }
31     
32     public int getId() {
33       return this.m_id;
34     }
35     
36     public int getRowsRS() {
37       return this.m_rows_rs;
38     }
39     
40     public int getRowsRE() {
41       return this.m_rows_re;
42     }
43
44     public int getColsR() {
45       return this.m_cols_r;
46     }
47     
48     public float[] getResult() {
49       return this.m_result;
50     }
51     
52     public int getRows() {
53       return this.m_rows;
54     }
55     
56     public int getCols() {
57       return this.m_cols;
58     }
59     
60     public float[] getImage() {
61       return this.m_image;
62     }
63     
64     public void calcSobel_dY() {
65       int rows_k1, cols_k1, rows_k2, cols_k2;
66       int[] kernel_1, kernel_2;
67       float temp;
68       int kernelSize, startCol, endCol, halfKernel, startRow, endRow;
69       int k, i, j, kernelSum_1, kernelSum_2;
70       float[] result, image;
71       int rows = this.m_rows;
72       int cols = this.m_cols;
73       
74       // level 1 is the base image.
75       
76       image = this.m_image;
77       
78       this.m_rows_rs = this.m_id * this.m_range;
79       this.m_rows_re = (this.m_id + 1) * this.m_range;
80       this.m_cols_r = cols;
81       result=this.m_result=new float[(this.m_rows_re-this.m_rows_rs)*this.m_cols_r];
82       
83       rows_k1 = 1;
84       cols_k1 = 3;
85       kernel_1 = new int[rows_k1 * cols_k1];
86       rows_k2 = 1;
87       cols_k2 = 3;
88       kernel_2 = new int[rows_k2 * cols_k2];
89
90       kernel_1[0] = 1;
91       kernel_1[1] = 0;
92       kernel_1[2] = -1;
93
94       kernelSize = 3;
95       kernelSum_1 = 2;
96       
97       kernel_2[0] = 1;
98       kernel_2[1] = 2;
99       kernel_2[2] = 1;
100
101       kernelSum_2 = 4;
102
103       startCol = 1;       //(kernelSize/2);
104       endCol = cols - 1;  //(int)(cols - (kernelSize/2));
105       halfKernel = 1;     //(kernelSize-1)/2;
106       
107       if((this.m_rows_re < 1) || (this.m_rows_rs > rows - 1)) {
108         return;
109       }
110       startRow = (1>this.m_rows_rs)?1:(this.m_rows_rs);       //(kernelSize)/2;
111       endRow = ((rows-1)<this.m_rows_re)?(rows-1):(this.m_rows_re);  //(rows - (kernelSize)/2);
112
113       int ii = startRow - this.m_rows_rs;
114       for(i=startRow; i<endRow; i++) {
115           for(j=startCol; j<endCol; j++) {
116               temp = 0;
117               for(k=-halfKernel; k<=halfKernel; k++) {
118                   temp += (float)(image[i * cols + (j+k)] 
119                                         * (float)(kernel_2[k+halfKernel]));
120               }
121               result[ii * cols + j] = (float)(temp/kernelSum_2);
122           }
123           ii++;
124       }
125     }
126 }