I\'m doing image comparisons and calculating diff\'s and have noticed that element-wise subtraction only seems to work when I read the data in as a numpy array with dtype=\'int6
uint8
means "8 bit unsigned integer" and only has valid values in 0-255. This is because 256 distinct values is the maximum amount that can be represented using 8 bits of data. If you add two uint8 images together, you'll very likely overflow 255 somewhere. For example:
>>> np.uint8(130) + np.uint8(131)
5
Similarly, if you subtract two images, you'll very likely get negative numbers - which get wrapped around to the high end of the range again:
>>> np.uint8(130) - np.uint8(131)
255
If you need to add or subtract images like this, you'll want to work with a dtype that won't underflow/overflow as easily (e.g. int64 or float), then normalize and convert back to uint8 as the last step.