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