function registerCells(this, newFieldStarts)
	if ~isempty(this.Data)
		if ~exist('newFieldStarts', 'var')
			newFieldStarts = 1;
		end

		% Correlate cells from multiple measurements
		cells = find(this.Data(1).ValidCell > -1000);
		for iFile = 2:size(this.Data, 1)
			disp(iFile);
			if any(newFieldStarts == iFile) % This is the first measurement at a new field of view
				cells(end+1:end+this.Data(iFile).CellNum,iFile) = find(this.Data(iFile).ValidCell > -1000);
			else % This is a repeated measurement at the same field of view
				for iCell = 1:this.Data(iFile).CellNum
					% Find the closest cell on previous RefImages
					mindist = 10;
					firstInSeries = newFieldStarts(newFieldStarts < iFile);
					firstInSeries = firstInSeries(end);
					for iPreviousFile = firstInSeries:iFile-1
						previousFileCellIDs = cells(:,iPreviousFile);
						previousFileCellIDs = previousFileCellIDs(previousFileCellIDs > 0);
						previousFileCellCoordinates = this.Data(iPreviousFile).CellCoordinates(previousFileCellIDs,:);

						dist = sqrt((this.Data(iFile).CellCoordinates.centerX(iCell) - previousFileCellCoordinates.centerX).^2 + (this.Data(iFile).CellCoordinates.centerY(iCell) - previousFileCellCoordinates.centerY).^2);
						arearatio = this.Data(iFile).CellCoordinates.area(iCell) ./ previousFileCellCoordinates.area;
						if any(dist < mindist & arearatio > 0.6 & arearatio < 1.4)
							mindist = min(dist);
							closestCell = previousFileCellIDs(dist == mindist);
							cells(cells(:,iPreviousFile) == closestCell(1), iFile) = iCell;
						end
					end

					if mindist >= 10
						cells(end+1, iFile) = iCell;
					end
				end
			end
		end

		this.Cells = cells;            
	end
end

