An adjoint operator is not the same as an inverse operator. Most people think of migration as the inverse of modeling, but mathematically it is the adjoint of modeling. In many wave-propagation problems, and are nearly the same. A formula for (from (14)) is .So the difference between and is in the factor .Theoreticians that work in the continuum find something like in the form of a weighting function in the physical domain or a weighting function in the spectral domain or both. Since it is merely a weighting function, it is not very exciting to practitioners who are accustomed to weighting functions in both domains for other purposes, principally for enhancing data display. Indeed, it could be a pitfall to introduce the weighting function of inversion, because it could interfere with the data display. The opportunity that I see for inversion lies in practice where is quite far from an identity matrix for another reason--that data is not a continuum and has aliasing, truncation, and noise.
A curious aspect of migration arises from the reflection amplitude versus offset (AVO) along the hyperbola. The effect of changing AVO is to change the dip filtering. Notice that effort expended to get the correct AVO in the modeling operator affects the migration operator (the adjoint) without necessarily making it closer to the inverse. It is a pitfall to imagine that carefully constructing the correct amplitude versus offset in a diffraction operator will make the corresponding migration operator more effective. The question of whether an inverse operator is better than an adjoint has no simple answer; its answer depends on circumstances. So the phrase ``true amplitude migration'' has questionable meaning.
You might look at the Kirchhoff migration code above and ask, what is the modelling matrix that is transposed? We don't see it. We started by defining ``adjoint operator'' as the transpose of a matrix, but now we seem to be defining it by a certain programming style. The abstract vector for Kirchhoff migration is packed with data values from a two-dimensional (t,x)-plane. The abstract matrix is hard to visualize. How can we know whether we have defined the adjoint operator correctly? The answer is given next by the dot-product test.