matlab rgb2gray() 的坑

本文介绍了在使用imshow和rgb2gray函数处理图像时,为何需要将图像数据类型转换为uint8。不进行转换会导致显示全白的问题,因为这两个函数会将double类型的数据视为0-1范围,而uint8类型则对应0-255范围。理解这种差异对于正确显示图像至关重要。
摘要由CSDN通过智能技术生成
ima = double(imread('data/house.png'));
ima = double(rgb2gray(uint8(ima)));

特别注意在在使用rgb2gray这个函数将3通道转化成单通道的时候,必须先将这个图像转化成uint8类型。如果不进行转化的话,由于此处的ima在读取之后变成了double数据类型,直接使用rgb2gray(ima)得到的矩阵的取值范围是在0-1范围之内的!这与造成imshow显示图像为全白的原因是一样的,imshow函数和rgb2gray函数,都会将double类型的数据视作0-1数值范围内的,如果原数据中含有大于1的数值,则这些数值都会被改为1!而imshow和rgb2gray函数把uint8类型的数据视作0-255范围之内的!

参考Imshow https://blog.csdn.net/tm807782912/article/details/46879315

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值