V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhttp
V2EX  ›  问与答

关于嵌入式平台做图像处理但是内存不足的处理方法,求老哥们指教

  •  
  •   zhttp · 2021-11-05 11:52:00 +08:00 · 1298 次点击
    这是一个创建于 1143 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基本情况是,一张 4k 的图片,有设备有 128m 内存,算法功能可以认为是降噪,按照现有算法,内存是完全不够的,现在有两个思路:
    第一个是优化算法,用时间换空间,但是自己水平有限,降了一些内存消耗,但是还不够,暂时没有能力继续优化;

    第二个是处理之前缩小图片尺寸,然后处理之后再放大回原来的尺寸,但是图片会肉眼可见的变糊;
    现在想要请教的是,在第二个思路的基础上,有没有什么方法保留更多的细节,让处理后的图片没那么糊,例如说,有原始图像 A ,缩小之后的图像 Ai ,处理之后的图像 Ao ,目前是用 opencv 直接把 Ao 放大到 A 的尺寸得到最终结果 B ,是不是可以对比 Ao 和 Ai 的变化,直接把这个变化直接应用到原始图像 A 上面,相比于直接放大 Ao ,有没有可能获得质量更好的 B ?

    16 条回复    2021-11-06 09:39:46 +08:00
    villivateur
        1
    villivateur  
       2021-11-05 11:59:28 +08:00 via Android
    这种情况为什么不考虑换一个更大的内存呢?还是说硬件成本控制更重要?
    Ediacaran
        2
    Ediacaran  
       2021-11-05 12:02:10 +08:00 via iPhone
    分块处理吧
    qq316107934
        3
    qq316107934  
       2021-11-05 12:05:46 +08:00
    如 2 楼所说,先裁剪成 N 块,处理后最后合并
    zhttp
        4
    zhttp  
    OP
       2021-11-05 13:35:38 +08:00
    @villivateur 硬件方案我插不上话。。
    zhttp
        5
    zhttp  
    OP
       2021-11-05 13:36:02 +08:00
    @Ediacaran @qq316107934 感谢建议,准备试一下
    root99527
        6
    root99527  
       2021-11-05 14:24:03 +08:00
    分块加 overlap 比较靠谱
    booboo
        7
    booboo  
       2021-11-05 14:26:31 +08:00
    降噪的这种,分块处理没有问题的
    zhttp
        8
    zhttp  
    OP
       2021-11-05 14:51:21 +08:00
    @root99527 你好,能麻烦简单解释一下 overlap 是什么吗?我之前都是纯开发,第一次接触算法。。。
    zhttp
        9
    zhttp  
    OP
       2021-11-05 14:56:49 +08:00
    @Ediacaran @qq316107934 @root99527 @booboo 另外各位老哥,我尝试了一下把原始图像简单切成上下左右四块处理完再拼起来,可以看到四块明显有区别,可能是算法本身用到了图像的全局信息,切割之后每块的信息都有区别,导致降噪结果各不相同,我现在打算试试类似于降采样的方法抽出来几张图,分别处理一下试试。
    qq316107934
        10
    qq316107934  
       2021-11-05 15:00:08 +08:00   ❤️ 1
    @zhttp 是边缘有问题对吧,应该是算法会用到周围像素的信息,如果你不清楚的算法可以加一个出血框,也就是过量裁剪一部分,拼接的时候使用出血框内的。
    lysS
        11
    lysS  
       2021-11-05 15:07:46 +08:00
    降噪?快速傅立叶变化和窗函数都是有专有硬件的,性能很高;看是否可以考虑下
    root99527
        12
    root99527  
       2021-11-05 15:17:59 +08:00
    @zhttp overlap 指的是比如 256x256 的一张图,分成四个 block 时,不能直接割成 64x64 的块,需要增加冗余像素比如 80x80 ,在拼接的时候再取平均。
    zhttp
        13
    zhttp  
    OP
       2021-11-05 16:26:55 +08:00   ❤️ 1
    感谢楼上老哥们的帮助,就不一一 @叨扰了,我现在采用的方法是按降采样的方式分成四个,这样每个图像可以最大程度保持相似,处理完再按原位置合成,目前内存和时间消耗算是可以接受,以后有需要我再研究研究其他的方法,再次感谢各位。
    c0xt30a
        14
    c0xt30a  
       2021-11-05 18:36:27 +08:00
    @zhttp 图片里的每个像素与它的邻居是强相关的,最好像前面提到的那样,有 overlap 的切割,直接切成四块再拼接太粗暴了
    vance123
        15
    vance123  
       2021-11-05 23:19:25 +08:00 via Android
    想当年我的板子只有 32k 内存
    zhttp
        16
    zhttp  
    OP
       2021-11-06 09:39:46 +08:00
    @c0xt30a 明白了,感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2811 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:10 · PVG 20:10 · LAX 04:10 · JFK 07:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.