首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重新缩放整数值,以便将其与im2double格式的图像矩阵进行比较

问如何重新缩放整数值,以便将其与im2double格式的图像矩阵进行比较
EN

Stack Overflow用户
提问于 2015-04-06 03:59:23
回答 1查看 42关注 0票数 0

我在MATLAB中使用了以下代码:

代码语言:javascript
复制
I=imread('filename');
I=im2double(I);

现在我必须比较一个整数值,比方说'2',和已经转换成im2double的图像像素值。如何将这些整数值重新缩放为其im2double等效值?

EN

回答 1

Stack Overflow用户

发布于 2015-04-06 11:32:40

im2double会缩放图像,以便强度的动态范围从[0,1]开始。如果您想要将一个“整数”值与转换后的图像进行比较,则需要知道该值所来自的图像的类型。例如,如果2来自uint8图像,则该图像的亮度动态范围为[0,255]。因此,2将被转换为2/255。但是,如果2来自uint16图像,则该图像的亮度的动态范围为[0,65535],因此2将被转换为2/65535。

因此,除非您知道2值的来源图像数据类型,否则无法回答此问题。一旦知道了这一点,您就可以继续并相应地转换2值。您可以简单地除以数据类型可以容纳的最大值。

因此,给定整数值val,下面是一个图表,您可以将其用作所需的正确转换因子的指南:

代码语言:javascript
复制
Data Type   Floating-Point Equivalent
  uint8            val/255
  uint16           val/65535
  uint32           val/4294967295

注意255 --> 2^8 - 1、65535 --> 2^16 - 1和4294967295 --> 2^32 - 1,这是有意义的。您知道,数字需要二进制数字(位)来表示数字,而上述数据类型末尾的数字会告诉您需要多少位才能做到这一点。图像本质上是这些数字的2D网格,这些是无符号数据类型,与使用最高有效位表示数字符号的有符号数据类型相比,这些数据类型使用所有位来表示整数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29461611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档