I have an difference image produced by substracting two images of a certain location taken a two different time steps. The resulting image of this operation shows a histogram with a very large peak centered a 0. Since this naturally can be identified with no-change between dates I interpret this as a difference image showing a very small amount of change. Yet by the magnitudes of the observations located at the tails; strong change. I would like to threshold this image to identify three classes: negative change, no-change and positive change. I have been experimenting with classical thresholding techniques (Otsus, Kapurs, Rosins, etc) applied to each of the sides of this unimodal distribution to achieve this. I beleive I am not getting to good results because these techniques are not designed for a very spikey "distribution" with very long tails. Can anyone propose a method that can be suitable for this problem or some sort of preprocessing of the original data (difference image) which can help me out on this?
The first thing that jumps to my mind is that you want to test if your data is significantly different from zero. Determining if it is positive or negative should be trivial.
I would set a threshold based on the standard deviation of the results. Anything greater than say $\pm2\sigma$ from the mean (zero) are considered to be significant changes. The suitable value of sigma to choose on how peaked your distribution is and how many and how big changes you expect.
This sort of approach is traditionally used to look for outliers, conventionally with $\pm3\sigma$, which is quite similar to what you want.