a70be64b51193a56093180968a598d0bb035869a
[IRC.git] / Robust / src / Benchmarks / oooJava / tracking / IXLR.java
1 public class IXLR {
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 IXLR(int id,
21                 int range,
22                 float[] data,
23                 int rows,
24                 int cols) {
25       this.m_id = id;
26       this.m_range = range;
27       this.m_image = data;
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 float[] getResult() {
37       return this.m_result;
38     }
39     
40     public int getRowsRS() {
41       return this.m_rows_rs;
42     }
43     
44     public int getRowsRE() {
45       return this.m_rows_re;
46     }
47     
48     public int getColsR() {
49       return this.m_cols_r;
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 void calcSobel_dX() {
61       int rows_k1, cols_k1, rows_k2, cols_k2;
62       int[] kernel_1, kernel_2;
63       float temp;
64       int kernelSize, startCol, endCol, halfKernel, startRow, endRow;
65       int k, i, j, kernelSum_1, kernelSum_2;
66       float[] result, image;
67       int rows = this.m_rows;
68       int cols = this.m_cols;
69
70       image = this.m_image;
71       
72       this.m_rows_rs = this.m_id * this.m_range;
73       this.m_rows_re = (this.m_id + 1) * this.m_range;
74       this.m_cols_r = cols;
75       result=this.m_result=new float[(this.m_rows_re-this.m_rows_rs)*this.m_cols_r];
76       
77       rows_k1 = 1;
78       cols_k1 = 3;
79       kernel_1 = new int[rows_k1 * cols_k1];
80       rows_k2 = 1;
81       cols_k2 = 3;
82       kernel_2 = new int[rows_k2 * cols_k2];   
83
84       kernel_1[0] = 1;
85       kernel_1[1] = 2;
86       kernel_1[2] = 1;
87
88       kernelSize = 3;
89       kernelSum_1 = 4;
90       
91       kernel_2[0] = 1;
92       kernel_2[1] = 0;
93       kernel_2[2] = -1;
94
95       kernelSum_2 = 2;
96
97       startCol = 1;           //((kernelSize)/2);
98       endCol = cols - 1;      //(int)(cols - (kernelSize/2));
99       halfKernel = 1;         //(kernelSize-1)/2;
100
101       if((this.m_rows_re < 1) || (this.m_rows_rs > rows - 1)) {
102         return;
103       }
104       startRow = (1>this.m_rows_rs)?1:(this.m_rows_rs);       //(kernelSize)/2;
105       endRow = ((rows-1)<this.m_rows_re)?(rows-1):(this.m_rows_re);  //(rows - (kernelSize)/2);
106
107       int ii = startRow - this.m_rows_rs;
108       for(i=startRow; i<endRow; i++) {
109           for(j=startCol; j<endCol; j++) {
110               temp = 0;
111               for(k=-halfKernel; k<=halfKernel; k++) {
112                   temp += (float)(image[i * cols + (j+k)] 
113                                         * (float)(kernel_2[k+halfKernel]));
114               }
115               result[ii * cols + j] = (float)(temp/kernelSum_2);
116           }
117           ii++;
118       }
119     }
120     
121     public void printResult() {
122       //    result validation
123       System.printI(11111111);
124       for(int i=0; i<this.m_rows_re-this.m_rows_rs; i++) {
125           for(int j=0; j<this.m_cols_r; j++) {
126               System.printI((int)(this.m_result[i * this.m_cols_r + j]*10));
127           }
128       }
129     }
130 }