如下图这是200s手册上写的将YUV转换为RGB的算法。 这个东西改怎么配置才能正常的将YUV转为RGB呢?这里每个系数的值都是可以配置的,就是不知道该设置成什么值导致LCD上显示的图有色差。
下图中左上角是layer1层YUV转RGB的图 右下角是我通过网上查找的算法转的RGB显示在layer0的图。
下面是网上找的将YUYV转RGB的算法转换后得到上图右下角的图。请大佬出手算下参数。
离线
你标题上写个DE我还要以为你要用硬件转呢 一点进来发现是软件转
软件转很慢的 f1c的话还是操作libdrm使的fb直接显示yuv吧
你可能没注意看,我就是要用硬件的display engine转,左上角就是硬件yuv转的rgb但是明显变色了,转换系数不对,右下角是软件转的,只是看下有没有大佬会算,给出来参考下。
然后linux上f1c的有实现硬件yuv转rgb吗?能否给个链接,非常感谢。之前看别人说用过libdrm没效果可能sdk不对。
最近编辑记录 vip888888 (2020-10-27 22:31:50)
离线
通过上面公式拆解,可以得到rgb和yuv的直接公式如下:
r = (y + (359 * v)) >> 8; = y/256 + (359*(V-128))/256 = y + (359*V - 45952)/256 = y+ 1.40234375*v - 179.5
g = (y - (88 * u) - (183 * v)) >> 8; =y/256 -(88*(u-128))/256 - (183*(v-128))/256 = y -(88*u-11264)/256 - (183*v-23424)/256=y -0.34375u+44 -0.71484375*v + 91.5 = y-0.34375u-0.71484375*v + 135.5
b = (y + (454 * u)) >> 8; = y/256 + (454*(u-128))/256 = y + (454u-58112)/256 = y + 1.7734375u - 227
统一下就是:
r =y+ 1.40234375*v - 179.5
g =y-0.34375u-0.71484375*v + 135.5
b =y + 1.7734375u - 227
但是和这个公式一配比的话,他这个系数无法变为负数,最后那个常量也无法变为负数了。所以此公式也对应不上呀。
要么就用已知的YUV 和RGB的值套上全志手册的公式解12次一元一次方矩阵?以此得到系数?或者有没有大佬已经有系统跑通了的可以读取下0x01E60950 - 0x01E60980的值给来参考下。
离线
你用的硬件转rgb速度怎么样?代码能分享下看看么
这不是还没成功嘛。转的不对呀,还没搞定呢。
最近编辑记录 vip888888 (2020-10-29 22:45:15)
离线