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 与给定yiq到rgb转换矩阵相乘时,与Matlab函数NTSC2RGB的值不同?_Image Processing_Matlab - Fatal编程技术网

Image processing 与给定yiq到rgb转换矩阵相乘时,与Matlab函数NTSC2RGB的值不同?

Image processing 与给定yiq到rgb转换矩阵相乘时,与Matlab函数NTSC2RGB的值不同?,image-processing,matlab,Image Processing,Matlab,我使用的是matlab函数ntsc2rgb,但其输出与matlab网页上给出的矩阵函数的实际乘法不同 !![YIQ到RGB转换矩阵] nI是一个三维ntsc值矩阵 disp(nI([1:1],[1:1],[1:3]))); fprintf('after\n'); nI=ntsc2rgb(nI); disp(nI([1:1],[1:1],[1:3]))); Matlab shows this output before 1 1 1 0.956863 1

我使用的是matlab函数ntsc2rgb,但其输出与matlab网页上给出的矩阵函数的实际乘法不同

!![YIQ到RGB转换矩阵]

nI是一个三维ntsc值矩阵

   disp(nI([1:1],[1:1],[1:3])));
   fprintf('after\n');
   nI=ntsc2rgb(nI);
   disp(nI([1:1],[1:1],[1:3])));

Matlab shows this output 
before
1   1   1   0.956863
1   1   2   -0.165627
1   1   3   -0.0367254
after
1   1   1   0.719921
1   1   2   0.9519
1   1   3   1

But actual value should be 
value of   1   1   1   0.776073
value of   1   1   2   1.025472
value of   1   1   3   1.077615
前值来自上面的一些代码,后值来自使用matlab ntsc2rgb函数后的值


使用上图所示的YIQ到RGB矩阵计算实际值。

颜色matlab输出绝对正确。正确的步骤是:

将无效输入规范化为0..1范围 应用变换矩阵 某些点可能位于RGB颜色空间之外,映射到RGB空间内最近的点。
您发布的链接说,rgbmap和yiqmap都包含0到1.0范围内的强度,这可能是相关的。@RogerRowland如上面输入中所示,所有强度值都在0到1范围内。如果我遗漏了什么,请详细说明。我是否误解了这些负值?我是否误解了实际值>1?@RogerRowland我编辑了这个问题。请看编辑版本,如果我们不考虑那些负面价值,那么也“后价值”将不匹配的“实际价值”的价值。我怀疑matlab是否使用图片中所附的上述矩阵来表示ntsc2rgb。请将示例缩小到相应的大小。打印数据的代码是不相关的,disp会将代码减少到三行…我对这个问题所做的是在不更改任何YIQ值的情况下查找RGB,然后如果有任何值大于1say max。将所有RGB值除以此max值。