matlab ( octave ) imshow显示图像详解

本文介绍了在使用Octave(MATLAB的类似软件)时遇到的显示和保存图像的问题,特别是关于double类型图像的处理。当imshow显示double类型的图像时,若像素值超过1,则显示为白色。解决方法包括调整图像范围到0-1或通过减去图像最小值确保所有像素为正。示例代码展示了正确显示double类型图像的步骤。
摘要由CSDN通过智能技术生成

最近在用octave (类似于matlab的计算软件, 函数和matlab一致) 写程序的时候, 在显示图像和保存图像的时候遇到了一些小问题, 所以简单的总结了一下。


本文用的图像为灰度图像:



imread() 返回的图像类型是uint8类型, 这时用imshow显示图像的时候, imshow会认为输入矩阵的范围在0-255, 如果imshow的参数为double类型的,那么imshow认为输入矩阵的值为0-1.


很多时候需要将图像转换为double类型的, 但是转换以后直接使用imshow显示的是一片白色, 是因为当imshow显示图像的时候, 会认为double类型的图像矩阵的范围在0-1, 超过1的像素值当作1处理, 这样就是几乎所有的像素都是白色。


情况1:

% img will be uint8 type
img = imread('syz.bmp');


% imshow: when the parameter img is uint8 type, 
% imshow will default make the range of pixel value as [0-255]
imshow(img);
fprintf('Program paused. Press enter to continue.\n');
pause;

这个时候直接显示读入的图像是正确的, 因为这个时候图像的类型是uint8

显示结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值