Friday, December 08, 2006

Fitting Using Levenberg-Marquardt Algorithm



The intensity data taken from the 3D MRI was very noisy resulting in a fit with a high error. We created a different metric to alleviate the effects of the high error. In this method, we looked at the midpoint in between the end of the Gaussian and the beginning of the logistic for each intensity profile and found the difference between that and the optimal position for the point. This required that the data be fitted to the Gaussian and logistic model every iteration. My previous method of exhaustively trying all the combinations of parameters would have been too slow for this situation. Therefore, I tried to improve the fitting program by implementing the Levenberg-Marquardt algorithm to speed up the process. This was added to the fitting code and produced results that were very close to the previous fit with a huge boost in efficiency. A movie of the process is shown above.

Once I had completed making the fit program faster, I moved on to adding it into the intensity profile metric where it would analyze the intensities at each iteration and find the point between the Gaussian and logistic and compare that to the optimal position. The registration would work well if the offset was within about ten pixels of the optimal position. If I increased the offset, the optimizer would start heading in the opposite direction away from the brain even though the metric would be increasing. This might have something to do with a setting in the optimizer needing adjusting. A movie of this process follows. The blue line on the ring of points shows the specific intensity that I am looking at and the graph shows the intensity data in orange with the fit in white and the optimal position for the mid point in between the end of the Gaussian and beginning of the logistic with a green line.