Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 为什么我们在将RGB转换为YCBCR时使用复杂的方程而不是简单的方程?_Image Processing_Colors_Rgb - Fatal编程技术网

Image processing 为什么我们在将RGB转换为YCBCR时使用复杂的方程而不是简单的方程?

Image processing 为什么我们在将RGB转换为YCBCR时使用复杂的方程而不是简单的方程?,image-processing,colors,rgb,Image Processing,Colors,Rgb,当我在verilog上实现RGB2YCBCR时。我看到了几种将RGB转换为YCBCR的方法。其中一些非常简单。但其他方面则相当复杂 例如,如果我们使用 y = (r >> 2) + (g >> 1) + (b >> 2); 它很容易在硬件上实现 但是有人说 y = (r*4899 + g*9617+ b*1868+ 8192) >> 14 更快吗 我不知道为什么他们有这个方程,为什么复杂的方程比简单的方程好。为什么他们用它来代替那个简单的方程

当我在verilog上实现RGB2YCBCR时。我看到了几种将RGB转换为YCBCR的方法。其中一些非常简单。但其他方面则相当复杂

例如,如果我们使用

y = (r >> 2) + (g >> 1) + (b >> 2);
它很容易在硬件上实现

但是有人说

y = (r*4899 + g*9617+ b*1868+ 8192) >> 14 
更快吗

我不知道为什么他们有这个方程,为什么复杂的方程比简单的方程好。为什么他们用它来代替那个简单的方程式

p/S:我看到OpenCV也使用那个复杂的。
非常感谢

在带有乘法器和桶形移位器的处理器上,所有这些操作都需要一个时钟周期,第二个公式不能更快(5次运算比7次运算)

这个复杂的方程式是由电视技术标准强制规定的,有历史和技术原因()

颜色空间是一个相当复杂的话题



请注意,第一个公式未规范化:如果输入值在[0,1]范围内,则输出值在[0,10]范围内,您应该除以10。这会使第一个公式慢得多。

您好,我读了这篇文章,但我没有找到问题的答案,简单并不意味着正确。这些常数的存在并不是为了让它变得更难,而是为了使它符合标准,你能告诉我为什么我们使用y=(4899R+9617G+1868B+8192)>>14而不是y=0.299R+0.587G+0.114B吗。我认为这是同一个方程。显然,要保持整数运算。如果我做方程y=(153R+300G+74B+512)>>9,你知道吗。@Luanguyen:这不太准确。为什么y=(4899R+9617G+1868B+8192)>>14是正确的?为什么y=(153R+300G+74B+512)>>9不正确?。我认为他们有同样的结果