Посмотрите на тип данных вашей переменной a. Вероятно, это uint8, что означает, что b также становится uint8, содержащим округленные значения - другими словами, вы теряете два бита информации на пиксель.
Вы упоминаете "двойной тип данных", но я не вижу, где вы используете его в своем коде.
Если вы начали с
а = двойной (imread ( 'pix1.jpg'));
тогда ваш MSE должен быть почти равен нулю (я бы ожидал, что он будет порядка 256 * 256 * 3 * eps (то есть ошибка округления)).