基本情况是,一张 4k 的图片,有设备有 128m 内存,算法功能可以认为是降噪,按照现有算法,内存是完全不够的,现在有两个思路:
第一个是优化算法,用时间换空间,但是自己水平有限,降了一些内存消耗,但是还不够,暂时没有能力继续优化;
第二个是处理之前缩小图片尺寸,然后处理之后再放大回原来的尺寸,但是图片会肉眼可见的变糊;
现在想要请教的是,在第二个思路的基础上,有没有什么方法保留更多的细节,让处理后的图片没那么糊,例如说,有原始图像 A ,缩小之后的图像 Ai ,处理之后的图像 Ao ,目前是用 opencv 直接把 Ao 放大到 A 的尺寸得到最终结果 B ,是不是可以对比 Ao 和 Ai 的变化,直接把这个变化直接应用到原始图像 A 上面,相比于直接放大 Ao ,有没有可能获得质量更好的 B ?
1
villivateur 2021-11-05 11:59:28 +08:00 via Android
这种情况为什么不考虑换一个更大的内存呢?还是说硬件成本控制更重要?
|
2
Ediacaran 2021-11-05 12:02:10 +08:00 via iPhone
分块处理吧
|
3
qq316107934 2021-11-05 12:05:46 +08:00
如 2 楼所说,先裁剪成 N 块,处理后最后合并
|
4
zhttp OP @villivateur 硬件方案我插不上话。。
|
5
zhttp OP @Ediacaran @qq316107934 感谢建议,准备试一下
|
6
root99527 2021-11-05 14:24:03 +08:00
分块加 overlap 比较靠谱
|
7
booboo 2021-11-05 14:26:31 +08:00
降噪的这种,分块处理没有问题的
|
9
zhttp OP @Ediacaran @qq316107934 @root99527 @booboo 另外各位老哥,我尝试了一下把原始图像简单切成上下左右四块处理完再拼起来,可以看到四块明显有区别,可能是算法本身用到了图像的全局信息,切割之后每块的信息都有区别,导致降噪结果各不相同,我现在打算试试类似于降采样的方法抽出来几张图,分别处理一下试试。
|
10
qq316107934 2021-11-05 15:00:08 +08:00 1
@zhttp 是边缘有问题对吧,应该是算法会用到周围像素的信息,如果你不清楚的算法可以加一个出血框,也就是过量裁剪一部分,拼接的时候使用出血框内的。
|
11
lysS 2021-11-05 15:07:46 +08:00
降噪?快速傅立叶变化和窗函数都是有专有硬件的,性能很高;看是否可以考虑下
|
12
root99527 2021-11-05 15:17:59 +08:00
@zhttp overlap 指的是比如 256x256 的一张图,分成四个 block 时,不能直接割成 64x64 的块,需要增加冗余像素比如 80x80 ,在拼接的时候再取平均。
|
13
zhttp OP 感谢楼上老哥们的帮助,就不一一 @叨扰了,我现在采用的方法是按降采样的方式分成四个,这样每个图像可以最大程度保持相似,处理完再按原位置合成,目前内存和时间消耗算是可以接受,以后有需要我再研究研究其他的方法,再次感谢各位。
|
14
c0xt30a 2021-11-05 18:36:27 +08:00
@zhttp 图片里的每个像素与它的邻居是强相关的,最好像前面提到的那样,有 overlap 的切割,直接切成四块再拼接太粗暴了
|
15
vance123 2021-11-05 23:19:25 +08:00 via Android
想当年我的板子只有 32k 内存
|