Image processing 与给定yiq到rgb转换矩阵相乘时,与Matlab函数NTSC2RGB的值不同?
我使用的是matlab函数ntsc2rgb,但其输出与matlab网页上给出的矩阵函数的实际乘法不同 !![YIQ到RGB转换矩阵] nI是一个三维ntsc值矩阵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
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值。