我有一个以双精度表示的 rgb 图像矩阵(高度 * 宽度 * 3)。在对矩阵进行一些操作之后,一些值大于 1 或小于 0。我需要将这些值归一化为 1 和 0。谢谢。
问问题
12293 次
2 回答
6
好吧,只需按条件使用索引。假设您的矩阵称为 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]并且不需要归一化。
于 2011-11-13T12:24:39.747 回答
0
如果您只想查看可以使用的图像
imagesc(M);
它负责范围本身。
如果您想手动更改值并完全控制它,
M = M ./ max(M(:));
如果你只有积极的价值观,就会成功。要获得完整的对比度图像,您可能需要:
m = m - min(m(:));
m = m ./ max(m(:));
于 2011-11-13T12:36:34.257 回答