【发布时间】:2014-11-26 12:01:26
【问题描述】:
在 matlab 中有一个函数 rgb2ycbcr,该函数根据输入图像表示使用多个范围,但所有这些范围都考虑正值。 相反,我希望在这个情节中代表我的价值观
我该怎么办?
【问题讨论】:
-
不能先乘以2再减1吗? (或任何必要的因素,取决于您的初始范围。)
标签: matlab image-processing colors color-space
在 matlab 中有一个函数 rgb2ycbcr,该函数根据输入图像表示使用多个范围,但所有这些范围都考虑正值。 相反,我希望在这个情节中代表我的价值观
我该怎么办?
【问题讨论】:
标签: matlab image-processing colors color-space
您可以将rgb2ycbcr 的输出映射到-1 到+1 的范围。例如,rgb2ycbcr 的 Cb 和 Cr 输出的可能范围之一是 [16 240],可以使用 interp1 轻松重新映射。下面代码中的 Cb 表示来自rgb2ycbcr 的输出矩阵中的 Cb 列;你可能需要做一些重塑操作。
CbNew = interp1([16, 240], [-1, 1], Cb);
您还可以根据输出数据自动找到适当的重新映射,因为这三个潜在范围是互斥的。同样的重新映射也适用于 Cr。
if any(Cb < 1)
CbRange = [16/255, 240/255];
elseif any(Cb < 250)
CbRange = [16, 240];
elseif any(Cb < 61681)
CbRange = [4112, 61680];
else
%\\suggest throwing an error here, since the above should cover all possible output
end
CbNew = interp1(CbRange, [-1, 1], Cb);
【讨论】: