add tracking benchmark
[IRC.git] / Robust / src / Benchmarks / oooJava / tracking / IYLM.java
1 public class IYLM {
2
3     /* current processing image related */
4     float[] m_image;
5     int m_rows;
6     int m_cols;
7     
8     /* current processing image related */
9     float[] m_result;
10     int m_rows_r;
11     int m_cols_r;
12     
13     int m_counter;
14     
15     /* constructor */
16     public IYLM(int counter,
17                 float[] data,
18                 int rows,
19                 int cols) {
20       this.m_counter = counter;
21       this.m_rows = this.m_rows_r = rows;
22       this.m_cols = this.m_cols_r = cols;
23       this.m_image = data;
24       this.m_result = new float[rows * cols];
25     }
26     
27     public int getRows() {
28       return this.m_rows;
29     }
30     
31     public int getCols() {
32       return this.m_cols;
33     }
34     
35     public float[] getImage() {
36       return this.m_image;
37     }
38     
39     public int getRowsR() {
40       return this.m_rows_r;
41     }
42     
43     public int getColsR() {
44       return this.m_cols_r;
45     }
46     
47     public float[] getResult() {
48       return this.m_result;
49     }
50     
51     public boolean addCalcSobelResult(IYL iyl) {
52       int startRow = iyl.getRowsRS();
53       int endRow = iyl.getRowsRE();
54       int i, j, k, cols;
55       float[] image, r;
56       
57       image = this.m_result;
58       this.m_counter--;
59       cols = this.m_cols_r;
60       
61       // clone data piece      
62       r = iyl.getResult();
63       k = 0;
64       for(i = startRow; i < endRow; i++) {
65         for(j = 0; j < cols; j++) {
66           image[i * cols + j] = r[k * cols + j];
67         }
68         k++;
69       }
70       
71       return (0 == this.m_counter);
72     }
73     
74     public void calcSobel_dY() {
75       int rows_k1, cols_k1, rows_k2, cols_k2;
76       int[] kernel_1, kernel_2;
77       float temp;
78       int kernelSize, startCol, endCol, halfKernel, startRow, endRow;
79       int k, i, j, kernelSum_1, kernelSum_2;
80       float[] result, image;
81       int rows = this.m_rows_r;
82       int cols = this.m_cols_r;
83       
84       // level 1 is the base image.
85       
86       image = this.m_result;
87       
88       rows_k1 = 1;
89       cols_k1 = 3;
90       kernel_1 = new int[rows_k1 * cols_k1];
91       rows_k2 = 1;
92       cols_k2 = 3;
93       kernel_2 = new int[rows_k2 * cols_k2];
94
95       kernel_1[0] = 1;
96       kernel_1[1] = 0;
97       kernel_1[2] = -1;
98
99       kernelSize = 3;
100       kernelSum_1 = 2;
101       
102       kernel_2[0] = 1;
103       kernel_2[1] = 2;
104       kernel_2[2] = 1;
105
106       kernelSum_2 = 4;
107
108       startCol = 1;       //(kernelSize/2);
109       endCol = cols - 1;  //(int)(cols - (kernelSize/2));
110       halfKernel = 1;     //(kernelSize-1)/2;
111
112       startRow = 1;       //(kernelSize)/2;
113       endRow = (rows-1);  //(rows - (kernelSize)/2);
114
115       for(i=startRow; i<endRow; i++) {
116           for(j=startCol; j<endCol; j++) {
117               temp = 0;
118               for(k=-halfKernel; k<=halfKernel; k++) {
119                   temp += (float)(image[(i+k) * cols + j] 
120                                          * (float)(kernel_1[k+halfKernel]));
121               }
122               image[i * cols + j] = (float)(temp/kernelSum_1);
123               image[i * cols + j] = (float)(image[i * cols + j] + 128);
124           }
125       }
126     }
127     
128     public void printImage() {
129       //    result validation
130       for(int i=0; i<this.m_rows; i++) {
131           for(int j=0; j<this.m_cols; j++) {
132               System.printI((int)(this.m_image[i * this.m_cols + j]*10));
133           }
134       }
135     }
136     
137     public void printResult() {
138       //    result validation
139       for(int i=0; i<this.m_rows_r; i++) {
140           for(int j=0; j<this.m_cols_r; j++) {
141               System.printI((int)(this.m_result[i * this.m_cols_r + j]*10));
142           }
143       }
144     }
145 }