[已答复] M1 = double(imA) / 256; 求解是什么意思?

[复制链接]
betty51 发表于 2014-1-29 11:11:34

[imA,map1] = imread('D:\A.tif');  
M1 = double(imA) / 256;  

为什么要除256,除后会带来怎样变化?求解,谢谢,感激!

6 条回复


wm_thu 发表于 2014-1-30 00:43:20
这代码是想把图像数据的动态范围调整到[0,1]。但其实用im2double就可以一步搞定了。

betty51 发表于 2014-1-30 00:56:27
那请问下为什么要把图像数据的动态范围调整到[0,1]呢?

wm_thu 发表于 2014-1-30 02:46:18
betty51 发表于 2014-1-30 00:56
那请问下为什么要把图像数据的动态范围调整到[0,1]呢?

记得点回复哦。
图像数据可以用多种数据格式,比如uint8和double/single。一般规定uint8的合法动态范围是[0, 255],double/single的合法动态范围是[0,1]。

betty51 发表于 2014-1-30 10:18:10
wm_thu 发表于 2014-1-30 02:46
记得点回复哦。
图像数据可以用多种数据格式,比如uint8和double/single。一般规定uint8的合法动态范围是 ...

那调到[0,1]有什么意义呢?还是不是很清楚,那如果调到【0,255】呢?求解,谢谢啦~

wm_thu 发表于 2014-1-30 22:24:43
betty51 发表于 2014-1-30 10:18
那调到[0,1]有什么意义呢?还是不是很清楚,那如果调到【0,255】呢?求解,谢谢啦~ ...

"规定"本身不见得有什么“意义”,只不过是工程上的一种约定。
我也不想翻什么标准了,简单说,在matlab里用imshow的时候,默认的设定就是我上面说的。lz可以自己调节动态范围,比如不除以256,然后imshow(imA);看看效果。

ewgeabsf 发表于 2017-4-19 11:52:16
wm_thu 发表于 2014-1-30 22:24
"规定"本身不见得有什么“意义”,只不过是工程上的一种约定。
我也不想翻什么标准了,简单说,在matlab ...

请问我又在一个代码中看到I=double(I)/0.2,请问这又是什么意思啊?新手求教:'(
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表