Commit be1064b112ce9ff916dee996c8ef426f0f78d6b3

Authored by David Mayerich
1 parent 77281320

fixed cropping errors in stim::bil and stim::bsq

Showing 2 changed files with 11 additions and 11 deletions   Show diff stats
stim/envi/bil.h
... ... @@ -1214,9 +1214,9 @@ public:
1214 1214 bool PROGRESS = false){
1215 1215  
1216 1216 //calculate the new image parameters
1217   - unsigned long long samples = x1 - x0;
1218   - unsigned long long lines = y1 - y0;
1219   - unsigned long long bands = b1 - b0;
  1217 + unsigned long long samples = x1 - x0 + 1;
  1218 + unsigned long long lines = y1 - y0 + 1;
  1219 + unsigned long long bands = b1 - b0 + 1;
1220 1220  
1221 1221 //calculate the size of a line
1222 1222 unsigned long long L = samples * sizeof(T);
... ... @@ -1232,19 +1232,19 @@ public:
1232 1232 unsigned long long jumpb = (X() - samples) * sizeof(T);
1233 1233  
1234 1234 //distance needed to jump from the previous line of the last band to the next line of the first band
1235   - unsigned long long longjump = ((Z() - b1) * X() + b0 * X()) * sizeof(T);
  1235 + unsigned long long longjump = ((Z() - bands) * X()) * sizeof(T);
1236 1236  
1237 1237 //set the start position for the cropped region
1238 1238 file.seekg((y0 * X() * Z() + b0 * X() + x0) * sizeof(T), std::ios::beg);
1239 1239  
1240 1240 for (unsigned long long x = 0; x < lines; x++)
1241 1241 {
1242   - for (unsigned long long z = b0; z < b1; z++)
  1242 + for (unsigned long long z = b0; z <= b1; z++)
1243 1243 {
1244 1244 file.read((char *)(temp + z * samples), sizeof(T) * samples);
1245 1245 file.seekg(jumpb, std::ios::cur); //go to the next band
1246 1246  
1247   - if(PROGRESS) progress = (double)(x * Z() + z+1) / (lines * Z()) * 100;
  1247 + if(PROGRESS) progress = (double)(x * (b1 - b0 + 1) + z + 1) / (lines * (b1 - b0 + 1)) * 100;
1248 1248 }
1249 1249  
1250 1250 //write slice data into target file
... ...
stim/envi/bsq.h
... ... @@ -1198,9 +1198,9 @@ public:
1198 1198 bool PROGRESS = false){
1199 1199  
1200 1200 //calculate the new number of samples, lines, and bands
1201   - unsigned long long samples = x1 - x0;
1202   - unsigned long long lines = y1 - y0;
1203   - unsigned long long bands = b1 - b0;
  1201 + unsigned long long samples = x1 - x0 + 1;
  1202 + unsigned long long lines = y1 - y0 + 1;
  1203 + unsigned long long bands = b1 - b0 + 1;
1204 1204  
1205 1205 //calculate the size of a single band
1206 1206 unsigned long long L = samples * lines * sizeof(T);
... ... @@ -1221,7 +1221,7 @@ public:
1221 1221 file.seekg( (b0 * X() * Y() + y0 * X() + x0) * sizeof(T), std::ios::beg);
1222 1222  
1223 1223 //for each band
1224   - for (unsigned long long z = b0; z < b1; z++)
  1224 + for (unsigned long long z = b0; z <= b1; z++)
1225 1225 {
1226 1226 //std::cout<<z<<std::endl;
1227 1227 for (unsigned long long y = 0; y < lines; y++)
... ... @@ -1229,7 +1229,7 @@ public:
1229 1229 file.read((char *)(temp + y * samples), sizeof(T) * samples);
1230 1230 file.seekg(jumpl, std::ios::cur); //go to the next band
1231 1231  
1232   - if(PROGRESS) progress = (double)((z - b0 + 1) * lines + y + 1) / ((b1 - b0) * lines) * 100;
  1232 + if(PROGRESS) progress = (double)((z - b0) * lines + y + 1) / ((b1 - b0 + 1) * lines) * 100;
1233 1233 }
1234 1234 out.write(reinterpret_cast<const char*>(temp), L); //write slice data into target file
1235 1235 file.seekg(jumpb, std::ios::cur);
... ...