为什么我们在matlab中对图像使用数值运算之前将灰度级转换为double? 是否有必要这样做?
答案 0 :(得分:1)
因为像uint8
这样的整数类型在MATLAB中有saturated arithmetic,所以浮点类型在执行某些操作时具有更高的精度。
同样地说,向uint8
转换为double
比向另一个方向转发更为安全。
举一个例子,假设你想通过将图像的动态范围提高到2的幂来改变图像的动态范围:
img = imread('peppers.png');
subplot(121), imshow(im2double(img).^2), title('double')
subplot(122), imshow(img.^2), title('uint8')
您可以看到uint8
图像如何在255处被大多数值饱和。
更重要的是,使用分数指数会为整数类型抛出错误:
>> img.^(1.1);
Error using .^
Integers can only be raised to positive integral powers.