光栅投影中Gamma校正

光栅投影中Gamma校正学习郑东亮达飞鹏《提高数字光栅投影测量系统精度的gamma校正技术》一文后,对其中的关键技术进行了解析。摄像机获得的实际灰度图像:其中是整个系统的gamma值,是预编码值(需要根据实验进行选择),是幅度调制(保证归一化),是背景光强,和是由系统确定的值(需要通过投射不同的灰度图进行解算)。gamma校正的目的:选择一个合适的预编码值,使得,从而使系统的gamma失真得以消除或者减…

大家好,又见面了,我是你们的朋友全栈君。

学习 郑东亮 达飞鹏 《提高数字光栅投影测量系统精度的gamma校正技术》一文后,对其中的关键技术进行了解析。

摄像机获得的实际灰度图像:I_{c}^{i}=c_{1}(I_{s}^{i})^{\gamma _{a}/\gamma _{p}+\gamma _{b}}}}}}}+c_{2}}

其中{\gamma _{a}/\gamma _{p}+\gamma _{b}}=\gamma^{​{}'}是整个系统的gamma值,\gamma_{p}是预编码值(需要根据实验进行选择),c_{1}是幅度调制(保证I^{i}_{s}归一化),c_{2}是背景光强,\gamma_{a}和\gamma_{b}是由系统确定的值(需要通过投射不同的灰度图进行解算)。

gamma校正的目的:选择一个合适的预编码值\gamma_{p},使得\gamma^{'}=1,从而使系统的gamma失真得以消除或者减小。

—————————————–

如何求解上述的\gamma^{​{}'}呢?

可以通过投射不同的灰度图,因为投射灰度图的灰度值已知,获取的灰度图的灰度值也已知,可以联立方程组求解只含有一个未知数的超越方程(可以采用寻优算法得到未知数的最佳值)。

超越方程组:\frac{I^{c}_{1}-I^{c}_{2}}{I^{c}_{1}-I^{c}_{3}}=\frac{(I^{s}_{1})^{\gamma^{​{}'}}-(I^{s}_{2})^{\gamma^{​{}'}}}{(I^{s}_{1})^{\gamma^{​{}'}}-(I^{s}_{3})^{\gamma^{​{}'}}}

寻优目标函数:f(\gamma^{​{}'})=\frac{I^{c}_{1}-I^{c}_{2}}{I^{c}_{1}-I^{c}_{3}}-\frac{(I^{s}_{1})^{\gamma^{​{}'}}-(I^{s}_{2})^{\gamma^{​{}'}}}{(I^{s}_{1})^{\gamma^{​{}'}}-(I^{s}_{3})^{\gamma^{​{}'}}}

得到\gamma^{​{}'}后,可以根据{\gamma _{a}/\gamma _{p}+\gamma _{b}}=\gamma^{​{}'}解出\gamma_{a}和\gamma_{b}(当然,需要利用寻优算法寻找到两个最佳的\gamma^{​{}'})

得到\gamma_{a}和\gamma_{b}后,令\gamma^{​{}'}为1,再解出最终的预编码值\gamma_{p}。

—————————————–

如何选择合适的预编码值?

这部分内容是与传统的方法进行对比,找到一个可以使相位误差与传统方式得到的误差最为接近时的预编码值,可以试错,也可以猜想一个不太离谱的值,然后取其一定范围的值群,最后进行实验的对比。

这部分内容感觉有点怪怪的,看似不符合一般科学实验的规则。。。但是这种方式带有逆向思维的处理方法非常的独到!通过猜想,然后验证猜想,找到真理!

—————————————–

灰度响应范围如何确定?

这部分内容可以通过投射不同灰度级的图像进行分析,得到一个合适的灰度级范围。

—————————————–

后续操作

确定好了灰度级范围后,就可以选取3种不同灰度值作为计算机的输入图像灰度值(归一化到I^{s}_{i}),这样就可以正常投射灰度图像了,然后再根据上述的步骤一步步的确定参数。

这里有个技巧,是初始化预编码值,根据预编码值,得到确定的灰度响应函数,然后计算\gamma^{​{}'}、\gamma_{a}、\gamma_{b},以及最后的\gamma_{p}。

—————————————————————————–

上述方法的好处在于可以投影很少的灰度图像得到系统的gamma值。在得到gamma值后,可以根据灰度响应函数,建立LUT,后面再对理论的灰度图像进行校正,最后让投影仪投射到待测物体上,那么摄像机获取到的图像就是经过gamma校正后的灰度图像了。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150597.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Memwatch使用说明

    Memwatch使用说明linux下的测试工具真是少之又少,还不好用,最近试用了memwatch,感觉网上的介绍不太好,所以放在这里跟大家分享 。其实大部分都是看的帮助,很多地方翻译得不好还有错,请原谅指出最好看原文。如果转载或引用,请注明我的博客地址,谢谢。 1介绍MemWatch由 Johan Lindh 编写,是一个开放源代码 C 语言内存错误检测工具。MemWatch支持 ANSI C,它提供结果日志纪录

    2022年7月13日
  • 揭秘:HR是如何做背景调查的?你真的就可以隐瞒事实了吗?

    揭秘:HR是如何做背景调查的?你真的就可以隐瞒事实了吗?

    2022年2月13日
  • 戴尔:我们绝不会放弃 PC

    戴尔:我们绝不会放弃 PC

    2022年3月4日
  • 怎么测试网站的稳定性_稳定性长期试验需进行多少个月试验

    怎么测试网站的稳定性_稳定性长期试验需进行多少个月试验今天面试遇到一个问题,如何进行网站的稳定性测试?因为之前从事的是电信行业,其稳定性测试是发送确定的traffic,运行72小时,观测系统的资源使用情况,traffic处理是否正常,有无内存泄漏,有无进程崩溃,其他资源使用是否正常等等。所以也给了一个类似的稳定性测试思路:按照系统设计容量的性能指标,模拟最大并发访问需求,运行72小时,看系统响应时间,监控资源利用的方法。回来查询发现,网易对这个问题也…

    2022年9月8日
  • Redis 缓存穿透 + 缓存雪崩 + 缓存击穿的原因和解决方案「建议收藏」

    Redis 缓存穿透 + 缓存雪崩 + 缓存击穿的原因和解决方案「建议收藏」在生产环境中,会因为很多的原因造成访问请求绕过了缓存,都需要访问数据库持久层,虽然对Redsi缓存服务器不会造成影响,但是数据库的负载就会增大,使缓存的作用降低一、缓存穿透缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在日常工作中出于容错的考虑,如果从持久层查不到数据则不写入缓存层,缓存穿透将导致不存在的数据每次请求都要到持久层去查询,失去了缓…

    2022年6月15日
  • 带宽指信道所能送的信号的频率宽度_信道带宽计算公式

    带宽指信道所能送的信号的频率宽度_信道带宽计算公式信道带宽1.4M3M5M10M15M20M分别对应子载波数721803006009001200,这些子载波数是怎么算出来的?

    2022年8月31日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号