This is a nice overview, however, the images seem to be for NMR imaging (NMRI) while the equations are for 1D NMR. As other posts comment the NMR only portion can be relatively simple, but it's usually used to characterize chemical samples by their resonances. Imaging is very different.
I'd note that for 3D NMRI the challenge of tomography (extracting the 3D data from a bunch of interfering resonant torus regions) is actually more difficult in practice (I haven't heard of ML/DL techniques, but I'd expect they are now used) though the concept of NMR (without imaging) is more physically interesting. Furthermore, when chemistry is important the fitting algorithms to extract weak NMR signals overlapping strong signals is actually also moderately complex and over looked here for the sake of clarity and brevity.
The Fourier Transform in 2D or 3D is not really a much bigger deal, that's why I handled only the 1D one there in equations (I was too lazy to type in latex, I guess).
NMR spectroscopy is indeed quite different than NMR imaging, I might have something about that on the blog sometime, it would be an interesting topic...
I find how the Fourier Transform works so simply in multiple dimensions as long as you have cartesian sampling is where the transform starts to shine. Just apply along one dimension then the others and because it's a linear unitary operator they are incredibly robust and it makes no difference which order you apply them. Then you can combine them with other measurement types in higher dimensional measurements (e.g. a relaxation period) and still just mindlessly apply the Fourier Transform along the frequency dimensions (first since it's so robust) and get the desired result.
There isn't any difference in the Fourier analysis between spectroscopy and imaging. In imaging you're just encoding position as a frequency and if you enforce Cartesian sampling the analysis remains the same, including combining extra dimensions. Spectroscopy and flow imaging experiments can get pretty crazy with 5-6 encoding dimensions limited only by your patience and instrument drift over longer periods (weeks).
The differences between spectroscopy and MRI are primarily application driven and then because it is tricker to apply precise magnetic field gradient pulses vs precisely timing RF pulses. Combined with the fact people are a lot bigger, more impatient and more delicate than test tubes while imaging can also be far less quantitative drives the design of very different NMR/MRI pulse sequences. In imaging, the speed gains and human placed limits on gradient slew rates (Audio frequency dB/dt induces currents in neurons) often justify the trouble of non-Cartesian and/or incomplete sampling.
If you want a next step for MRI signal processing, look into multiple-coil reconstruction techniques and how they not only combine the spacial sensitivity profiles of the coils with gradient imaging, without knowing the actual sensitivity profiles a-priori. Pretty much every medical MRI machine uses multiple receive coils to reduce imaging times.
Note: My user name is proton gamma though I left the field mid-career to do sw development. (A far better career though not as exciting if you love physics like I do.)
(edits: grammar, probably still missed a few typos)
Of course there isn't any difference in the Fourier analysis, but there is a difference between spectroscopy and MRI, enough to warrant a different post on the blog. In the MRI case you have a human with macroscopic inhomogeneities, while in the spectroscopic case you are not interested in those macroscopic inhomogeneities, but in the local differences in molecules, that the active nuclei 'feel'. It's quite a difference in scale and also you have one human in the 'sample' in the case of MRI, but many molecules in case of spectroscopy :)
The software we had to run in O-Chem lab would take the raw files from the NMR machine, run the FFT on it, then integrate the results. I was able to "borrow" a copy of the software myself so I could run the analysis on my NMR specs outside of lab.
Could have just taken the FID data and computed it in Julia in five lines of code!! (but you might not get that fancy tool that makes your integration shoulders nice and even.) Still though bruker charges an arm and a leg for the postprocessing of 1ds
Topspin is free for academic users for a while now, so that has changed at some point.
And while it's certainly possible to process 1D NMR spectra with a bit of code, it's certainly more than 5 lines. There's stuff like removing the digital filter that is an implementation detail of Bruker spectrometers you have to deal with. The FFT is the smallest parts, you also need window functions and phasing to make something useful. And for 2D NMR you additionally need to handle the various methods of quadrature detection in the indirect dimension.
I'd note that for 3D NMRI the challenge of tomography (extracting the 3D data from a bunch of interfering resonant torus regions) is actually more difficult in practice (I haven't heard of ML/DL techniques, but I'd expect they are now used) though the concept of NMR (without imaging) is more physically interesting. Furthermore, when chemistry is important the fitting algorithms to extract weak NMR signals overlapping strong signals is actually also moderately complex and over looked here for the sake of clarity and brevity.