Formally speaking, you would like to extrinsically calibrate the laser scanner to the 2D image. I have taken the liberty to edit your question to reflect that.
Here is how my initial approach would be:
Calibrate the intrinsics of the 2D camera. For that, just use OpenCV. You should store the intrinsic parameters: focal lengths, principal point and distortion coefficients.
Take an object which you could easily locate in 3D and 2D. Such an object could be any 3D model for instance if you can perform pose estimation both in 3D and 2D. Because it would be difficult to do this for free-form objects, I would propose to use a sphere-object which appears to be ellipse-like in the camera, and a sphere in the laser scanner. For instance, take an unused pilates-ball.
Place the pilates ball in the overlapping area of the point cloud and the 2D image. Then capture multitudes of images (at least about 30) by moving the ball in the overlapping region to various locations. At each location, make sure that the ball occupies about $1/4^{th}$ of the image and record the 2D and 3D frames.
Detect the ellipses in all the images, i.e. for each image, one ellipse. Use any open source tool, for instance 1D-hough transform to do that. I strongly suggest to refine the ellipse to subpixel accuracy, for instance via this method (source code). Record the center of the sphere (ellipse) in 2D $\{(x_i,y_i)\}$.
Detect the spheres in all of the laser point clouds. Again, many packages do exist. Even MATLAB has one method. Record the detected centers of the 3D sphere $\{(X_i,Y_i,Z_i)\}$. Again, a non-linear refinement of the sphere in 3D can help you in getting more accuracy. Check this one out for a complete pipeline on this if you like more sophisticated approaches.
Now you have an easy problem to solve: You have established 2D-3D coorespondences in the form $\{(x_i,y_i)\}\sim\{(X_i,Y_i,Z_i)\}$, have the calibration information of 2D camera and thus, all you need to do is to solve the PnP problem. Again many open and closed source software exists such as OpenCV's solvePnP or MATLAB's estimateWorldCameraPose.
The result will be a rotation matrix $R$ and a translation vector $t$ that maps the 3D scanner's coordinate frame to the image domain, thereby solving the registration problem.
I hope instructions are clear and this helps.
Note that, many things can be done to make this procedure easier, more robust, more accurate and etc. This created quite a big interest from academia, and if you dig a bit, you will come across a lot of sources. Nevertheless, for the beginning, the aforementioned procedure is pretty easy to implement.