Note: This usage demo can be found in Slicing_Demo.ipynb
in the project's repo.
You must configure paths to source and destination directories like the following. By default it takes the current working directory as the source folder for both images and annotations and also creates new folders:
/sliced_images
and/sliced_annotation
in the current working directory.
import image_bbox_slicer as ibs
im_src = './src/images'
an_src = './src/annotations'
im_dst = './dst/images'
an_dst = './dst/annotations'
slicer = ibs.Slicer()
slicer.config_dirs(img_src=im_src, ann_src=an_src,
img_dst=im_dst, ann_dst=an_dst)
The above images show the difference in slicing with and without partial labels. In the image on the left, all the box annotations masked in green are called Partial Labels.
Configure your slicer to either ignore or consider them by setting Slicer
object's keep_partial_labels
instance variable to True
or False
respectively. By default it is set to False
.
slicer.keep_partial_labels = True
An empty tile is a tile with no "labels" in it. The definition of "labels" here is tightly coupled with the user's preference of partial labels. If you choose to keep the partial labels (i.e. keep_partial_labels = True
), a tile with a partial label is not treated as empty. If you choose to not keep the partial labels (i.e. keep_partial_labels = False
), a tile with one or more partial labels is considered empty.
Configure your slicer to either ignore or consider empty tiles by setting Slicer
object's ignore_empty_tiles
instance variable to True
or False
respectively. By default it is set to True
.
slicer.ignore_empty_tiles = False
You can choose to store the mapping between file names of the images before and after slicing by setting the Slicer
object's save_before_after_map
instance variable to True
. By default it is set to False
.
Typically, mapper.csv
looks like the following:
| old_name | new_names |
|------------|---------------------------------|
| 2102 | 000001, 000002, 000003, 000004 |
| 3931 | 000005, 000005, 000007, 000008 |
| test_image | 000009, 000010, 000011, 000012 |
| ... | ... |
slicer.save_before_after_map = True
** By Number Of Tiles **
slicer.slice_by_number(number_tiles=4)
slicer.visualize_random()
** By Specific Size **
slicer.slice_by_size(tile_size=(418,279), tile_overlap=0)
slicer.visualize_random()
Note: visualize_sliced_random()
randomly picks a recently sliced image from the directory for plotting.