使用image()或rasterImage()在R中叠加红色/绿色图像

时间:2012-12-13 20:18:51

标签: image r graphics

为了突出两个大小相同的矩阵之间的区别,我想展示两个以半透明的方式叠加,一个矩阵使用红色阴影,另一个矩阵使用绿色阴影(在它们相同时产生黄色)

只显示一个矩阵

library(grDevices)
matr=replicate(10, rnorm(20,mean=0.5,sd=0.1))    
colpalette=colorRampPalette(c("black", "red")) 
image(matr^0.2,col = colpalette(1000),useRaster=T)

有没有人知道我应该如何调整它以显示以红色/绿色叠加的两个矩阵matr1matr2

此外,对亮度和亮度进行一些控制的最佳方法是什么?结果图像的对比?有没有比我现在使用的功率变换更好的方法?

欢呼声, 汤姆

1 个答案:

答案 0 :(得分:0)

通过首先计算两个矩阵之间的log2(差异)并使用中断为零的调色板绘制它,我们找到了一个简单的解决方案。这是有道理的,对吧?

library(grDevices)
matr1=replicate(10, rnorm(20,mean=0.5,sd=0.1)) 
matr2=replicate(10, rnorm(20,mean=0.5,sd=0.1))
matrdiff=log2(matr1/matr2)
nbcolors=1000
colpalette=colorRampPalette(c("red","yellow","green"))(nbcolors)
breaks = c(seq(min(matrdiff), 0, length.out=nbcolors/2), 0, 
           seq(0,max(matrdiff), length.out=nbcolors/2))
image(matrdiff,col=colpalette,breaks=breaks,useRaster=T)