opencv - ISO调整和亮度公式的代码实现

标签 opencv image-processing camera exif camera-calibration


大家好,
1。我拍摄了设置 ISO-Auto 的图像(暗示 ISO 将根据照明环境设置)。
2. 我们在图像文件的属性中有亮度值。

问题是,我需要在我的算法中使用一些固定的阈值来提取对象。显然,要使固定阈值起作用,环境应该是统一的。因此,以不同的 ISO 值拍摄的图像不可能最适合我的算法。

我需要制作图像(以不同的 ISO 拍摄)以最适合我的算法。
示例:我们知道 ISO-200 比 ISO-100 亮两倍。
但是要抵消 ISO-200 产生的额外亮度,在应用阈值之前我应该​​对图像进行哪些操作? (我只有在不同 ISO 下拍摄的图像。我不能要求调整光圈或快门速度参数来抵消 ISO-200 与 ISO-100 相比产生的变化。(我必须完全使用我的代码来抵消变化)
Screenshot Of Image properties window, Brightness value highlighted
图像属性窗口显示亮度值。
相机软件如何计算这个值? (我正在使用 SM-T810 Tab 前置摄像头来完成这项任务)。
我已经在谷歌上搜索了解决方案。 http://johnlind.tripod.com/science/scienceexposure.html
这个链接很好地解释了亮度值(Bv)。但是公式应用程序没有产生属性中显示的亮度值。
这个链接是亮度值计算的解决方案吗?

请帮我找到解决这个问题的方法。
Other Properties of camera found in properties of image
提前致谢。

最佳答案

你想达到什么目的?

如果你拍摄一张 ISO-100 的图像和另一张 ISO-200 的图像,那么来自维基百科

https://en.wikipedia.org/wiki/APEX_system#Use_of_APEX_values_in_Exif

亮度值为

B(...) = log_2 ( A^2/( T S N ) ),

其中ATSN分别是光圈值、快门速度、ASA速度和分别缩放常数。

仅作为 ASA 速度的函数

B( S ) = 常量 - log_2( S ),

所以一个场景用

B( 200 ) = 常量 - log_2( 2 * 100 ) = B(100) - 1

亮度降低一站。换句话说,如果亮度下降一档,那么为了补偿,您必须将 ASA 速度或快门速度加倍(或将光圈打开 1.4)。

Photoshop 将此调整作为“曝光”供您使用。

但这只有在场景光照不变的情况下才有意义。否则,您只是在提取亮点本身,而不是对象。

关于opencv - ISO调整和亮度公式的代码实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35316838/

相关文章:

c# - CvInvoke.Canny() - 在不同的计算机上给出不同的结果

opencv - 视频中的帧速率不正确

javascript - 使用 OpenCV.JS 进行颜色检测

opencv - OpenCV中的对象跟踪

c++ - 提取扫描文档的一部分(个人 ID)——选择哪个库和方法?

javascript - 如果更改 HTMLImageElement 的 src 是否会再次触发加载事件?

ios - 为什么当禁用 allowedEditing 时,iPhone 上的相机拍摄的全屏照片不会显示在 UIImageview 中?

android 方向 - Intent 问题(相机)

opencv - 针孔相机模型坐标系

python - 在OpenCv中从图像提取墙