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