有偿! C++图像处理方向问题求解决 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dylanstrive
V2EX    外包

有偿! C++图像处理方向问题求解决

  •  
  •   dylanstrive 2024-11-08 20:07:30 +08:00 2053 次点击
    这是一个创建于 416 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 已经使用 OpenGL 渲染出 13*13 个视角的图片
    • 现在想法是取四个角落的图片然后插值预测中间视角的图片和渲染出来的图片量化对比,越相似越好
    • 考虑使用光流法计算角落视角图片的像素位移,然后根据像素位移计算中间视角图片,考虑对比稠密和稀疏两种方式
    • 另外还有深度图,能否结合深度图来解决融合权重,来更好的处理像素

    基本流程如下

    基本流程

    OpenGL 渲染出来的视角图片

    渲染出来的视角图片

    有没有大佬懂图片处理能够实现的,或者使用其他技术实现,绿泡泡:RHlsYW5fc3RyaXZl

    8 条回复    2024-12-18 13:53:21 +08:00
    yankebupt
        1
    yankebupt  
       2024-11-08 23:43:31 +08:00
    四角的视角方向已知的话,深度图精度足够高的话,不考虑投射到空间点云然后投影插值么?
    算了看到 C++,肯定是要性能,要么就是四角的摄影机角度不知道要自己算(空间卷积拟合运算量爆炸),要么就是深度图精度不够,估计不行……
    话说为什么有人会用 C++在干这种 Nvidia DLSS 插帧在干的事情……
    课设么?
    yankebupt
        2
    yankebupt  
       2024-11-08 23:57:53 +08:00
    我不是专家,但是如果不知道视角插帧的话,我知道的至少有两种。
    一种是 AI 模型插帧,性能巨差但是显卡加速,本质是卷积或者偷懒或优化过的卷积,被遮挡的像素估计出来像一点
    可能半开源
    还有一种就纯 2D 位移缩放旋转,被遮挡的像素基本就糊成一片(随便填的),比较快,CPU 能实时 60 插 120 帧 1080P 之类
    后一种你可以下个 SVP Project 看看选项,有各种优化,性能的,估计(搜索)方法的,遮挡像素怎么填充的,满足各种喜好和性能需求……
    dylanstrive
        3
    dylanstrive  
    OP
       2024-11-09 00:32:17 +08:00
    @yankebupt 对的,就是课设。其他高级一点的方法都不懂,唯一能着手的就是 opencv 图像层面的处理,对性能其实也没啥要求,就是纯粹为了达到效果,都是些老的不能再老的一些东西了,像什么 DIBR 、根据 EPI 插值计算这些
    decaydave
        4
    decaydave  
       2024-11-09 06:03:03 +08:00   1
    只接触过 FSR3 插帧,可以跟你分享下大概思路
    1. 基本逻辑,跟你说的差不多,用速度把图 A 、结果图 Result 和图 B 中的一点 p 关联起来,取这些位置的颜色 c_A ,c_B ,然后根据一定规则把这些颜色混合起来 c_Result = mix_function(c_A, c_B, params),最后把这个颜色存进 Result 对应的位置。所以关键在于怎么混合
    2. 深度怎么用: Depth Clip ,大概目的是对于图 Result 中的一点 p ,算这一点在图 A 和图 B 中的对应点是否能被看见,把这个 vec2(bool)存到一个 mask 里,在混合的时候查询当前点的 DepthClip ,如果在 A 中不可见,那混合的时候就不考虑 A 的贡献,在 B 中不可见则不考虑 B 。
    DepthClip 具体怎么算: 重投影深度 D_B 到 Result 时刻,取三个深度 buffer 上对应点的值 D_A, D_B, D_Result (要转进 Camera space),从你图里看应该没有 reverted depth ,那就 DepthClip.invisible_in_A = D_Result - D_A > threshold; DepthClip.invisible_in_B = D_Result - D_B > threshold. 至于这个 threshold 怎么算可以参考这篇文章 (Same as FSR3) https://www.microsoft.com/en-us/research/publication/minimum-triangle-separation-for-correct-z-buffer-occlusion/
    3. 有了 Depth Clip 后 Result 画面上会有一些地方同时不能在 A 和 B 中看见(DepthClip=(false,false)),也就是说 c_A 和 c_B 的贡献都会被去除。为了不让这些纯黑影响画面效果,FSR3 还有个填缝机制 (Inpainting)
    本质上就是求当前画面的 mip chain (下采样),直到所有缝都被填上为止。然后将这些颜色填进缺失的像素中。
    其他细节:
    深度重投影 (包括写入 c_Result 本质上也是个重投影) 会出现多像素通过速度指向同一个像素的情况 (竞争), 处理竞争的思路本质上是保证前后遮挡关系,所以取深度较小者写入即可
    IC0ZB
        5
    IC0ZB  
       2024-11-10 12:01:44 +08:00
    有没有相机位姿的,有位姿直接 3d 空间投影好了。按理说你 opengl 渲染出来的应该是知道相机位姿的吧
    dylanstrive
        6
    dylanstrive  
    OP
       2024-11-10 14:34:01 +08:00
    @IC0ZB 你应该指的应该是 DIBR 基于深度渲染,根据相机位姿重投影到世界坐标系,然后将这些点再投影到虚拟相机位置的成像面,会存在遮挡空洞,最主要是课设不让做这个
    dylanstrive
        7
    dylanstrive  
    OP
       2024-11-10 14:46:46 +08:00
    @decaydave 谢谢佬的详细思路流程,我接下来再按照你的方式去尝试,奈何代码能力有点弱,万分感谢
    dylanstrive
        8
    dylanstrive  
    OP
       2024-12-18 13:53:21 +08:00 via Android
    @decaydave 大佬你好 我按照你的思路简单实现了整个大体流程,整个代码大概就 100 行不到,但是最后的效果不是很好,可以帮我优化修改一下吗,应该对你而言就是很简单了,有偿
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     885 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:43 PVG 05:43 LAX 13:43 JFK 16:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86