gpt4 book ai didi

r - 图像处理 : Average grayscale images

转载 作者:行者123 更新时间:2023-12-04 17:14:41 24 4
gpt4 key购买 nike

我想使用 R 平均两个灰度图像(两个相同大小的 png 文件)。

以下面的图片为例:
img1.png
enter image description here
img2.png
enter image description here
img3.png
enter image description here
img1.png的平均值和 img2.png应该导致类似 img3.png 的结果.我查看了 magickimager包没有成功。

最佳答案

当然,这个问题有多种解决方案。这是一个清楚地显示正在发生的事情并允许更大的灵活性。

让我们加载您的两个示例图片。

library(png)
img1 <- readPNG("owzUE.png")
img2 <- readPNG("HMka0.png")

碰巧它们的大小不同:
dim(img1)
# [1] 145 190 4
dim(img2)
# [1] 144 191 4

所以,让我们使大小与
img1 <- img1[1:144, 1:190, 1:4]
img2 <- img2[1:144, 1:190, 1:4]

每个图像由四个矩阵组成,前三个对应于 RGB channel ,最后一个对应于 alpha。让我们通过以下方式定义结果图像
img3 <- img1 * 0

这很好地给出了与 img1 相同大小的数组和 img2 .

一个密切相关的概念是 alpha blending但公式并不完全是您所需要的;图像之间的关系似乎并不对称。我们可以做的是考虑每个 RGB channel 的加权平均值,其中权重对应于相应的 alpha:
for(d in 1:3)
img3[, , d] <- (img1[, , d] * img1[, , 4] + img2[, , d] * img2[, , 4] ) / (img1[, , 4] + img2[, , 4])

因为在某些情况下两个 alpha 都是 0,我们用
img3[is.nan(img3)] <- 0

最后,我们将 alpha 值设置为两个图像中较大的一个
img3[, , 4] <- pmax(img1[, , 4], img2[, , 4])

并保存结果
writePNG(img3, "img3.png")

enter image description here

因此,这种方法也适用于彩色图像,并允许通过改变权重等来试验公式。

关于r - 图像处理 : Average grayscale images,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54469633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com