如何使用 R 中的 magick 包在图像边缘添加羽毛?
Posted
技术标签:
【中文标题】如何使用 R 中的 magick 包在图像边缘添加羽毛?【英文标题】:How can I use the magick package in R to add a feather around the edge of an image? 【发布时间】:2019-05-22 16:29:57 【问题描述】:我有一个使用 magick 包读入 R 的 gif 文件,我想对每帧的图像边缘进行模糊处理或添加羽化效果。我从文档中看到这在 ImageMagick 中是可能的(例如 https://www.imagemagick.org/Usage/morphology/#distance_feather 和 https://www.imagemagick.org/Usage/transform/#vignette),但无法弄清楚如何将此信息转换为 R。我需要使用哪些魔法函数和参数来制作这会发生吗?
我知道我需要单独处理 gif 的每一帧,例如:
img <- image_read("myGif.gif")
featheredGif <- _____ # ????insert a function to feather edges, applied to img[1]
for(i in 2:length(img))
featheredFrame <- _____ # ???? insert function to feather edges, applied to img[i]
featheredGif <- c(featheredGif, featheredFrame)
我希望结果看起来类似于此https://www.imagemagick.org/Usage/thumbnails/soft_edge.png 或此https://www.imagemagick.org/Usage/morphology/rose_feathered.png,但应用于 gif 中的每一帧。
【问题讨论】:
【参考方案1】:抱歉,我不知道 RMagick 或 R。但这里有用于绘制椭圆羽化和圆形矩形羽化的 ImageMagick CLI 命令。
输入:
椭圆形:
Read the image
Clone it and use -vignette to draw an ellipse and extract the alpha channel, blur it, then apply -level
Then put the result into the alpha channel of the input image
convert thumbnail.gif \
\( -clone 0 -background none -virtual-pixel none -vignette 0x0+0+0 \
-alpha extract -blur 0x10 -level 50x100% \) \
-alpha off -compose copyopacity -composite \
result.png
圆角矩形:
Read the input image and get the bottom right corner coordinate
Read it again.
Clone it, fill it with black, draw a round rectangle, blur it, apply -level
Then put the result into the alpha channel of the input image
wm1=`convert thumbnail.gif -format "%[fx:w-1]" info:`
hm1=`convert thumbnail.gif -format "%[fx:h-1]" info:`
convert thumbnail.gif \
\( -clone 0 -fill black -colorize 100 \
-fill white -virtual-pixel black -draw "roundrectangle 0,0 $wm1,$hm1 15,15" \
-blur 0x10 -level 50x100% \) \
-alpha off -compose CopyOpacity -composite \
result2.png
所以你需要 RMagick 的 -vignette、-composite、-draw、-blur 和 -level 等价物。
【讨论】:
感谢您在 ImageMagick 中概述如何执行此操作。我也希望有人能帮我把它翻译成 R。以上是关于如何使用 R 中的 magick 包在图像边缘添加羽毛?的主要内容,如果未能解决你的问题,请参考以下文章