我已经使用 imager::load.image() 函数加载了 RGB 图像。 我还使用 imager::threshold() 函数创建了一个二进制掩码。
我可以通过这样做将此蒙版应用于二值图像:
red_channel <- R(RGB_image)
green_channel <- G(RGB_image)
blue_channel <- B(RGB_image)
red_channel <- red_channel * Mask
green_channel <- green_channel * Mask
blue_channel <- blue_channel * Mask
但是 RGB_image * Mask 不起作用,因为 RGB 图像的维度比二进制 mask 更多。
所以我需要 R 中的一个函数来将二进制掩码应用于 RGB 图像。 或者将红色、绿色和蓝色图像组合成 RGB 图像的方法。
我非常倾向于在 R 中执行此操作,并且如果可能的话,我更倾向于继续使用成像器包。
经过一番实验,我找到了自己的问题。 这个函数可以解决问题,它确实依赖于成像器包。
RGBimage 应该是由 imager:load.image() 加载的 RGB 图像 Bthreshold 应该是由 TRUE 和 FALSE 值组成的二进制阈值。
apply_rgb_mask <-function(RGBimage, Bthreshold){
red <- R(RGBimage) * Bthreshold
green <- G(RGBimage) * Bthreshold
blue <- B(RGBimage) * Bthreshold
return(imappend(list(red, green, blue), "c"))
}