class_docstr: gen table mask 
code: def __call__(self, data):
      img = data["image"]
      cells = data["cells"]
      height, width = img.shape[0:2]
      if self.mask_type == 1:
          mask_img = np.zeros((height, width), dtype=np.float32)
      else:
          mask_img = np.zeros((height, width, 3), dtype=np.float32)
      cell_num = len(cells)
      for cno in range(cell_num):
          if "bbox" in cells[cno]:
              bbox = cells[cno]["bbox"]
              left, top, right, bottom = bbox
              box_img = img[top:bottom, left:right, :].copy()
              split_bbox_list = self.projection_cx(box_img)
              for sno in range(len(split_bbox_list)):
                  split_bbox_list[sno][0] += left
                  split_bbox_list[sno][1] += top
                  split_bbox_list[sno][2] += left
                  split_bbox_list[sno][3] += top
  
              for sno in range(len(split_bbox_list)):
                  left, top, right, bottom = split_bbox_list[sno]
                  left, top, right, bottom = self.shrink_bbox(
                      [left, top, right, bottom]
                  )
                  if self.mask_type == 1:
                      mask_img[top:bottom, left:right] = 1.0
                      data["mask_img"] = mask_img
                  else:
                      mask_img[top:bottom, left:right, :] = (
                          255,
                          255,
                          255,
                      )
                      data["image"] = mask_img
      return data
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import sys
  import six
  import cv2
  import numpy
label_desc: Use image node_id 5 for calling the GenTableMask obj's underlying member method code with example usage: obj.__call__(data) and returns: data