我有一个由double类型表示的rgb图像矩阵(高度*宽度*3)。 在对矩阵进行一些操作后,一些值变得大于1或小于0。 我需要将这些值规范化回1和0。 谢谢。
好的,您需要使用条件索引来实现。假设您的矩阵名称为 M。 如果您只想将大于1的值设置为1,小于0的值设置为零,请使用:
M(M > 1) = 1;
M(M < 0) = 0;
然而,如果您想将所有值按比例归一化到区间[0;1],那么您需要执行类似以下操作:
mmin = min(M(:));
mmax = max(M(:));
M = (M-mmin) ./ (mmax-mmin); % first subtract mmin to have [0; (mmax-mmin)], then normalize by highest value
在考虑归一化时,需要注意矩阵M已经在区间[0; 1]内的情况,此时不需要再进行归一化处理。
imagesc(M);
它会自动处理范围。
如果您想手动更改值并完全控制它,
M = M ./ max(M(:));
如果你只有正值,可以使用这个技巧。
如果想要得到完整对比的图像,你可能需要:
m = m - min(m(:));
m = m ./ max(m(:));
M = min(max(M,0),1)
。 - Amro(M = (M-mmin) ./ (mmax-mmin);
)?(而不是.*) - Sanich