我有 100 张图像,每张是 598 * 598 像素,我想通过取像素的平均值来消除图像和噪声,但是如果我想使用“逐像素添加”,那么除法我会写一个循环,直到一张图片重复596*598,一百张图片重复598*598*100。
有什么方法可以帮助我进行此操作吗?
原文由 Karmel Zaidan 发布,翻译遵循 CC BY-SA 4.0 许可协议
我有 100 张图像,每张是 598 * 598 像素,我想通过取像素的平均值来消除图像和噪声,但是如果我想使用“逐像素添加”,那么除法我会写一个循环,直到一张图片重复596*598,一百张图片重复598*598*100。
有什么方法可以帮助我进行此操作吗?
原文由 Karmel Zaidan 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先-将图像转换为浮点数。你有 N=100 张图片。想象一下,单个图像是 1 个图像的平均像素值的数组。您需要计算 N 个图像的平均像素值数组。
让 A
- X
图像的平均像素值数组, B
- Y
67178899823ad3f 图像的平均像素值数组然后 C = (A * X + B * Y) / (X + Y)
- X + Y
图像的平均像素值数组。为了在浮点运算中获得更好的精度 X
和 Y
应该大致相等
您可以合并所有图像,例如 合并排序 中的子数组。 In you case merge operation is C = (A * X + B * Y) / (X + Y)
where A
and B
are arrays of average pixel values of X
and Y
图片
原文由 Sergey Krivohatskiy 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
您需要遍历每个图像,并累积结果。由于这可能导致溢出,您可以将每个图像转换为
CV_64FC3
图像,并在CV_64FC3
图像上进行累积。 You can use alsoCV_32FC3
orCV_32SC3
for this, ie usingfloat
orinteger
instead ofdouble
.累积所有值后,您可以同时使用
convertTo
:CV_8UC3
这是一个创建 100 个随机图像并计算并显示平均值的示例代码: