matlab - uint8 和单个图像有什么区别?
问题描述
我已经知道uint8
包含 0 到 255 (2 8 -1) 之间的强度值,并且单个包含 0 到 1 之间的值,它用于保存更大的值而不会破坏范围误差。但是,除此之外,还有其他区别吗?
imagesc((I/64)*64)
和imagesc((Is/64)*64)
, where I
isuint8
和Is
is和有什么不一样single
?
解决方案
imagesc
只是在下面调用image
。至于image
,如果提供整数或浮点数,它的行为会有所不同,这可以从image
的文档中了解到:
如果
C
是double类型,则 RGB 三元组值[0 0 0]
对应于黑色和[1 1 1]
白色。如果
C
是整数类型,则图像使用全范围数据来确定颜色。例如,如果C
是类型uint8
,则[0 0 0]
对应黑色,[255 255 255]
对应白色。如果CData
是 类型int8
,则[-128 -128 -128]
对应黑色,[127 127 127]
对应白色。...
数据类型之间的转换
要将索引图像数据从整数类型转换为 type
double
,请添加 1。例如,如果X8
是 type 的索引图像数据uint8
,则使用以下方法将其转换为 typedouble
:X64 = double(X8) + 1;
要将索引图像数据从类型
double
转换为整数类型,请减 1 并使用round
以确保所有值都是整数。例如,如果X64
是 类型的索引图像数据double
,则将其转换为uint8
使用:X8 = uint8(round(X64 - 1));
要将真彩色图像数据从整数类型转换为 type
double
,请重新缩放数据。例如,如果RGB8
是 类型的真彩色图像数据uint8
,则使用以下方法将其转换为双精度:RGB64 = double(RGB8)/255;
要将真彩色图像数据从类型
double
转换为整数类型,请重新缩放数据并使用round
以确保所有值都是整数。例如,如果RGB64
是类型的图像数据double
,将其转换为uint8
使用:RGB8 = uint8(round(RGB64*255));
推荐阅读
- javascript - 我想为我的滚动箭头设置一个边框,让它自己绘制,而不是仅仅出现
- uwp - 动画 RadialGauge
- sql - SQL - 如何从同一列中的行值获取列 (SQL Server 2016)
- java - 从spring config自动装配一个bean - 特定于环境
- python - top (bash):显示 python 脚本的名称而不是“python”
- javascript - Phaser 3 - 使用移动队列的 Sprite 线性插值
- asp.net-core - asp.net core 不会绑定 id 值
- arrays - 将大型数据集转换为 2D 数组,然后根据条件转换为 2D Multiples 到 Total Columns
- ehcache - 运行测试套件时缓存关闭导致异常
- c - 如何使用用户输入打开文本文件,然后将其加载到二维数组中?