Okay, then the most logical explanation is that your reports->size() sometimes gives you zero, meaning that it can't find any target. In that case, your reference to particle 0 "reports->at(highParticle).center_mass_x_normalized;" will fault. To prove this, add something like this to your code. By switching this code, you will print out size() before you execute that centerX line that will fault. I'd bet, size() is zero.
Code:
numTargets = reports->size();
dsLCD->Clear();
dsLCD->Printf(DriverStationLCD::kUser_Line1, 1, "report width %d", convexHullImage->GetWidth());
//fix so is based on score
dsLCD->Printf(DriverStationLCD::kUser_Line2, 1, "size %d", reports->size());
dsLCD->UpdateLCD();
centerX = reports->at(highParticle).center_mass_x_normalized;
dsLCD->Printf(DriverStationLCD::kUser_Line3, 1, "center x %f", centerX);
dsLCD->UpdateLCD();