【问题标题】:how can i convert an image to YCbCr considering a range with negative values?考虑到负值范围,如何将图像转换为 YCbCr?
【发布时间】:2014-11-26 12:01:26
【问题描述】:

在 matlab 中有一个函数 rgb2ycbcr,该函数根据输入图像表示使用多个范围,但所有这些范围都考虑正值。 相反,我希望在这个情节中代表我的价值观

我该怎么办?

【问题讨论】:

  • 不能先乘以2再减1吗? (或任何必要的因素,取决于您的初始范围。)

标签: matlab image-processing colors color-space


【解决方案1】:

您可以将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);

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多