Matlab使用imread打开具有不同值的pgm图像

时间:2013-11-04 01:57:17

标签: matlab pgm

我有一个包含1251个不同像素值的pgm图像,范围从0到1250.我知道这是因为我可以用kate打开这个图像文件并查看值。

但是当我使用Matlab的imread打开同一个文件时,它也会返回1251个不同的像素值,但这些值不是连续的。最小值为0,最大值为65483。

我想在for循环中迭代这些值,所以我需要读取文件中存在的原始值和连续值。如何在Matlab中做到这一点?

编辑:如果有人想尝试,那就是图像。

image

1 个答案:

答案 0 :(得分:3)

缩放这些值,以便在您查看图像时,它大部分都不是黑色。

我通过检查:

测试了缩放是否适用于直线整数截断
[A] = imread( 'myfile.pgm', 'pgm' );
p = sort(unique(A(:));
q = uint16((0:1250) * 65535 / 1251)';
all(p == q)                             % returns 1

因此,您可以像这样恢复图像:

map = arrayfun( @(x) uint16(x * 1251 / 65536), 0:65535 );
B = arrayfun( @(x) map(x+1), A );