Basically, you have just splitted up your problem into steps. Each of these steps can be done in OpenCV or in C++. It is up to you to combine each step.
- Aligning images on given position is just applying a translation/rotation to your image, which can be done with a rotation matrix. Look at http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/warp_affine/warp_affine.html.
- Low pass filtering : http://stackoverflow.com/questions/9841084/low-pass-filter-in-opencv --> can be adapted to be used for the C++ interface, would not be that hard. Same can be used for high pass filtering.
- Gaussian filtering = blurring = http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html
- Use the beneath functionality to blend both images.
I guess you do not prefer to blend images from the beginning, but it is a fully implemented function of openCV. Maybe see where this gets you?
http://docs.opencv.org/doc/tutorials/core/adding_images/adding_images.html