Consider uint8(3)-uint8(5) . What value do you expect that to result in? uint8(-2) ... but -2 is clearly not an unsigned integer such as is representable in the datatype of Unsigned 8 Bit Integers (uint8)
In order to be able to get negative values, you have to convert the data to a signed datatype that can hold the maximum values of the subtraction, 256 minus 0 and 0 minus 256.
If you just want to check if two images are exactly equal, you can use equal().