Hello ihabram,
I suggest to check the code on the small project first, with the small number of tie points, like less than 1000 at first.
If you are planning to apply it to millions of points, you may need to modify the code further in order to store the extracted data in file instead of creating very long lists and dictionaries in memory. But in general Python code for millions of operations would work quite slow.
As for the dense cloud points, currently the access to those points is not available via Python, so you would need to export the point cloud to external text file, then read XYZ coordinates and apply camera.project method for each point (should be also transformed to the internal chunk's coordinate system) and check for every aligned camera, if the result of such projection fits the image dimensions. But actually, I think that this approach would take very long time for dense point clouds that have millions of points.