Files
2024-05-26 20:35:16 +08:00

3.1 KiB

Documentation

Image3D节点旨在处理和操作3D图像。它接受一个base64编码的图像和可选的材料作为输入,将它们转换为适合深度学习模型进一步处理的张量形式。该节点还处理掩码和背景图像的提取,提供一套全面的图像操作功能。

Input types

Required

  • upload
    • ‘upload’参数对于节点至关重要,因为它包含base64编码的图像数据和可选的材料进行处理。它对节点的执行至关重要,因为它提供了图像操作的主要输入。
    • Comfy dtype: Dict[str, str]
    • Python dtype: Dict[str, Union[str, torch.Tensor]]
  • material
    • ‘material’参数是可选的,允许包含可以用于增强主要图像处理过程的额外图像数据。它通过启用补充视觉元素的使用,增加了节点功能的灵活性。
    • Comfy dtype: IMAGE
    • Python dtype: Optional[torch.Tensor]

Output types

  • IMAGE
    • ‘IMAGE’输出代表以张量形式处理的3D图像,可用于机器学习或计算机视觉应用等下游任务。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor
  • MASK
    • ‘MASK’输出提供了从输入图像派生的二进制掩码,可用于分割或其他图像分析任务。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor
  • BG_IMAGE
    • ‘BG_IMAGE’输出是可选的背景图像,它补充了主要图像,为某些应用增强了上下文。
    • Comfy dtype: IMAGE
    • Python dtype: Optional[torch.Tensor]
  • MATERIAL
    • ‘MATERIAL’输出是处理过的材料图像,可以与主要图像一起用于更复杂的图像处理任务。
    • Comfy dtype: IMAGE
    • Python dtype: Optional[torch.Tensor]

Usage tips

  • Infra type: CPU

Source code

class Image3D:

    @classmethod
    def INPUT_TYPES(s):
        return {'required': {'upload': ('THREED',)}, 'optional': {'material': ('IMAGE',)}}
    RETURN_TYPES = ('IMAGE', 'MASK', 'IMAGE', 'IMAGE')
    RETURN_NAMES = ('IMAGE', 'MASK', 'BG_IMAGE', 'MATERIAL')
    FUNCTION = 'run'
    CATEGORY = '♾️Mixlab/Image'
    INPUT_IS_LIST = False
    OUTPUT_IS_LIST = (False, False, False, False)
    OUTPUT_NODE = True

    def run(self, upload, material=None):
        image = base64_to_image(upload['image'])
        mat = None
        if 'material' in upload and upload['material']:
            mat = base64_to_image(upload['material'])
            mat = mat.convert('RGB')
            mat = pil2tensor(mat)
        mask = image.split()[3]
        image = image.convert('RGB')
        mask = mask.convert('L')
        bg_image = None
        if 'bg_image' in upload and upload['bg_image']:
            bg_image = base64_to_image(upload['bg_image'])
            bg_image = bg_image.convert('RGB')
            bg_image = pil2tensor(bg_image)
        mask = pil2tensor(mask)
        image = pil2tensor(image)
        m = []
        if not material is None:
            m = create_temp_file(material[0])
        return {'ui': {'material': m}, 'result': (image, mask, bg_image, mat)}