I would go down each line of your binary image getting the centroids.
[rows, columns] = size(binaryImage);
xCentroids = zeros(rows, 8);
for row = 1 : rows
props = regionprops(binaryImage(row, :), 'Centroid')
xy = vertcat(props.Centroid);
xCentroids(row, :) = xy(1:8:, 1)
To find the bumps, you might call bwmorph(binaryImage, 'skel', inf) and then call regionprops again with the row number where the bumps are known to appear, assuming they're in the same place (row) each time.