一、imshow函数
(1)如果待显示的图像I是double类型
1. imshow ( I ):显示结果会直接将 I 中像素为0的显示为黑色,大于等于1的显示为白色;
2. imshow ( I , [ low, high ] ):I 中灰度值低于low的会显示为黑色,高于high的会显示为白色,介于low和high之间的会被线性拉伸到0-255显示;
3. imshow ( I , [ ] ):函数会将图像矩阵中min ( I ( : ) ) = low,max ( I ( : ) ) = high;从而达到灰度拉伸的效果;
4. I (1,1)=255; imshow ( I , [ ] ):如果想看到I真实的灰度信息,可以将图像矩阵中某个像素置为255,再进行显示。
(2)如果图像本身是uint8类型
取值范围是0~255;
imshow ( I )与imshow ( I , [ ] )没有差异。I = uint8( I )。
二、imwrite函数
同imshow,imwrite函数保存图像时,如果图像是double型,取值范围是0~1,超出范围的存为白。若为uint8型,取值范围是0~255。imwrite( I )。
对于double型,可以将图像进行如下操作归一化到0-1:
I = ( I - min(min(I))) / (max(max(I)) - min(min(I)));
三、 其他
中间类型转换与恢复,例:
对于取值范围在0-1的图像double型 Img,
Img = cast(Img.*double(intmax('uint16')), 'uint16');
Img_C_demosaic = demosaic(Img, 'grbg');
Img_C_demosaic = double(Img_C_demosaic);
Img_C_demosaic = Img_C_demosaic ./ double(intmax('uint16'));