R 将灰度图像转换并保存为绿色等颜色方案

R 将灰度图像转换并保存为绿色等颜色方案,r,imagemagick,rmagick,R,Imagemagick,Rmagick,假设我有这个: 我想将灰度转换为绿色模式并保存它。我使用以下代码实现了它: system('wget https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Von_einem_Schrecklichen_vnd_Wunderbarlichen_Cometen_so_sich_den_Dienstag_nach_Martini_dieses_lauffenden_M._D._Lxxvij._Jahrs_am_Himmel_erzeig

假设我有这个:

我想将灰度转换为绿色模式并保存它。我使用以下代码实现了它:

system('wget https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Von_einem_Schrecklichen_vnd_Wunderbarlichen_Cometen_so_sich_den_Dienstag_nach_Martini_dieses_lauffenden_M._D._Lxxvij._Jahrs_am_Himmel_erzeiget_hat_%28grayscale%29.png/320px-thumbnail.png')
library(png)
library(viridisLite)
x <- png::readPNG('320px-thumbnail.png')
x <- x[, ,1]
intmat <- x * 255
image(1:nrow(intmat), 1:ncol(intmat), intmat, col=viridis(256))
system('wgethttps://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Von_einem_Schrecklichen_vnd_Wunderbarlichen_Cometen_so_sich_den_Dienstag_nach_Martini_dieses_lauffenden_M._D._Lxxvij._Jahrs_am_Himmel_erzeiget_hat_%28grayscale%29.png/320px-缩略图.png')
图书馆(png)
图书馆(绿宝石)

x我相信有一些方法可以做到这一点,而不必重新设计轮子,但只需使用您加载的库,就可以相当直接地操纵viridis颜色,将其拆分为3个通道并另存为png

以下是为任何png执行此操作的函数:


png_to_viridis我从Mathplotpy中提取Verdis颜色贴图,并将其转换为ImageMagick格式的一组颜色。然后创建一个1D彩色贴图图像,并使用ImageMagick-clut将其应用于图像

输入:


结果:

如果您想要8位颜色而不是24位颜色,请使用PNG8:代替PNG24:


请注意,ImageMagick rgb颜色的范围为0到255,Mathplotpy使用的范围为0到1。因此,我不得不在最后将结果乘以255。

谢谢,除了我刚刚编辑的一个小错误之外,它工作得非常好!干杯
convert picture.png \
\( -size 1x1 \
xc:"rgba(0.267004,0.004874,0.329415,1.)" \
xc:"rgba(0.283072,0.130895,0.449241,1.)" \
xc:"rgba(0.262138,0.242286,0.520837,1.)" \
xc:"rgba(0.220057,0.343307,0.549413,1.)" \
xc:"rgba(0.177423,0.437527,0.557565,1.)" \
xc:"rgba(0.143343,0.522773,0.556295,1.)" \
xc:"rgba(0.119512,0.607464,0.540218,1.)" \
xc:"rgba(0.166383,0.690856,0.496502,1.)" \
xc:"rgba(0.319809,0.770914,0.411152,1.)" \
xc:"rgba(0.525776,0.833491,0.288127,1.)" \
xc:"rgba(0.762373,0.876424,0.137064,1.)" \
xc:"rgba(0.993248,0.906157,0.143936,1.)" \
-append \) -clut -evaluate multiply 255 PNG24:picture_verdis.png