小编Mar*_*sin的帖子

从HDR图像中选择亮度(曝光)

我目前卡在图片上的视频节目中.

问题:

我正在从UE4中提取图片,由于存在错误,在渲染截图期间并未考虑所有灯光.输出是HDR图像.我希望得到更好的亮度,因为导出的图像非常暗,就像第一次曝光一样.

在此输入图像描述

使用UE4中的"曝光偏差"参数,我能够真实地获得场景的亮度,但不能将此参数应用于屏幕截图渲染: 在此输入图像描述

尝试:

使用Tonemapper算法(特定cv::TonemapDrago)我能够获得更好的图像结果: 在此输入图像描述

对于我的情况,Tonemap算法的主要问题是因为全局亮度根据区域的亮度而改变:在第二个图像中,窗口增加了大量的光,因此算法降低了所有亮度以调整平均值.在渲染的视频中,光线变化非常残酷.

我试图改变亮度和饱和度而没有成功.我已经修改了TonemapDrago尝试使用常量的代码来执行算法的某些步骤.

题 :

我想从HDR图像中"选择曝光时间".Tonemap基于同一图像的几个曝光时间,在我的情况下并不有趣.

欢迎任何其他想法.

编辑:

CV :: Mat深度为5,类型为CV_32FC3

cout << mat.step 给我19200

以下是我用来尝试解决问题的2个示例:

第一张图片

与光窗口的图像

编辑2:

无法用gimp打开.HDR图片,带有"explosure blend"插件的事件.我可以使用Photoshop获得足够的结果.那背后的算法有什么想法吗?OpenCV的6个Tonemap算法中的任何一个允许选择曝光校正. 在此输入图像描述

编辑3:

我已经按照这个tuto中的算法解释了openGL,它给了我这个C +代码:

cv::Mat exposureTonemap (cv::Mat m, float gamma = 2.2, float exposure = 1)
{
  // Exposure tone mapping
  cv::Mat exp;
  cv::exp( (-m) * exposure, exp );

  cv::Mat mapped = cv::Vec3f(1.0) - exp;
  // Gamma correction 
  cv::pow(exp, 1.0f / gamma, exp);

  cv::imshow("exposure …
Run Code Online (Sandbox Code Playgroud)

c++ opencv hdr unreal-engine4 opencv3.0

8
推荐指数
1
解决办法
1248
查看次数

Snake算法 - opencv活动轮廓 - 工作不太好

我实际上正在进行头侧轮廓检测.当照片拍摄在白墙前时,我决定在用阈值处理的图片上运行(活动轮廓模型算法).

问题是蛇不适合鼻子,嘴巴和嘴巴下方(正如你在下面的图片中看到的那样).

//load file from disk and apply threshold
IplImage* img = cvLoadImage (file.c_str (), 0);
cvThreshold(img, img, 170, 255, CV_THRESH_BINARY);

float alpha = 0.1; // Weight of continuity energy
float beta = 0.5; // Weight of curvature energy
float gamma = 0.4; // Weight of image energy

CvSize size; // Size of neighborhood of every point used to search the minimumm have to be odd
size.width = 5;
size.height = 5;

CvTermCriteria criteria;
criteria.type = CV_TERMCRIT_ITER;  // …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm opencv

2
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×2

opencv ×2

algorithm ×1

hdr ×1

opencv3.0 ×1

unreal-engine4 ×1