2019.4.6
1、为什么图像要从uint8类型转为double类型?
因为imread()读入的图像是uint8类型,将原图像的灰度值转换成double的作用主要是考虑计算过程中的精度的问题,double 的数据是有小数点的,而uint8是0-255的整数,如果直接用uint8计算,会在计算过程中产生舍入误差,这种误差在图像的数据中是比较大的误差。显示的时候是因为我们的显示系统采用的颜色模式大多为RGB模式,其每一种颜色分量的取值只能在0-255,所以显示时要用uint8数据。
2、为什么要把图像转为灰度图进行处理?
我们识别物体,最关键的因素是梯度(现在很多的特征提取,SIFT,HOG等等本质都是梯度的统计信息),梯度意味着边缘,这是最本质的部分,而计算梯度,自然就用到灰度图像了。颜色本身,非常容易受到光照等因素的影响,同类的物体颜色有很多变化。所以颜色本身难以提供关键信息。
链接:https://www.zhihu.com/question/24453478/answer/35874118
3、double与im2double的区别?
double只做数据类型转换,(可以认为)不会修改数值本身。
im2double除了做数据类型转换还要对数据做线性缩放。下面的代码可以看出区别。
a = uint8(250);
b = double(a);
c = im2double(a);
2019.4.7
经过阅读小波变换图像