Full Code of aleju/imgaug for AI

master 0101108d4fed cached
290 files
6.1 MB
1.6M tokens
8828 symbols
1 requests
Download .txt
Showing preview only (6,447K chars total). Download the full file or copy to clipboard to get everything.
Repository: aleju/imgaug
Branch: master
Commit: 0101108d4fed
Files: 290
Total size: 6.1 MB

Directory structure:
gitextract_v3n8p6ds/

├── .codacy.yml
├── .github/
│   └── workflows/
│       ├── build_wheels.yml
│       ├── test_master.yml
│       └── test_pull_requests.yml
├── .gitignore
├── .pylintrc
├── .travis.yml
├── CHANGELOG.md
├── LICENSE
├── MANIFEST.in
├── README.md
├── bandit.yml
├── changelogs/
│   ├── 0.3.0/
│   │   ├── v0.3.0.cleaned.md
│   │   └── v0.3.0.uncleaned.md
│   ├── 0.4.0/
│   │   ├── 20191003_reworked_aug_methods.md
│   │   ├── 20191016_pooling_affects_maps.md
│   │   ├── 20191026_reworked_quantization.md
│   │   ├── 20191027_improve_invert.md
│   │   ├── 20191111_pickleable.md
│   │   ├── 20191113_iterable_augmentables.md
│   │   ├── 20191610_crop_and_pad.md
│   │   ├── 20191610_perspective_transform.md
│   │   ├── 20200107_improved_blending.md
│   │   ├── 20200126_python38.md
│   │   ├── added/
│   │   │   ├── 20190927_unwrapped_bb_aug.md
│   │   │   ├── 20191002_unwrapped_ls_aug.md
│   │   │   ├── 20191013_change_color_temperature.md
│   │   │   ├── 20191014_brightness_augmenters.md
│   │   │   ├── 20191016_dropout2d.md
│   │   │   ├── 20191019_colorwise_grayscaling.md
│   │   │   ├── 20191020_cartoon.md
│   │   │   ├── 20191023_mean_shift_blur.md
│   │   │   ├── 20191027_jigsaw.md
│   │   │   ├── 20191101_deterministic_list.md
│   │   │   ├── 20191102_autocontrast.md
│   │   │   ├── 20191103_affine_shear_y.md
│   │   │   ├── 20191103_equalize.md
│   │   │   ├── 20191103_identity.md
│   │   │   ├── 20191105_affine_wrappers.md
│   │   │   ├── 20191106_ooi_removal.md
│   │   │   ├── 20191110_bb_polygon_conversion.md
│   │   │   ├── 20191110_polygon_subdivision.md
│   │   │   ├── 20191110_withpolarwarping.md
│   │   │   ├── 20191117_debug_images.md
│   │   │   ├── 20191117_pad_multi_cval.md
│   │   │   ├── 20191218_imagecorruptions.md
│   │   │   ├── 20191220_cutout.md
│   │   │   ├── 20191221_inplace_cba_methods.md
│   │   │   ├── 20191224_pil_module.md
│   │   │   ├── 20191230_standardized_lut.md
│   │   │   ├── 20200101_bb_label_drawing.md
│   │   │   ├── 20200102_cbasoi_getitem.md
│   │   │   ├── 20200105_discretize_round.md
│   │   │   ├── 20200106_rain.md
│   │   │   ├── 20200106_randaugment.md
│   │   │   └── 20200125_image_warnings.md
│   │   ├── changed/
│   │   │   ├── 20190929_rngs_polygon_recoverer.md
│   │   │   ├── 20191110_affine_translation_precision.md
│   │   │   ├── 20191128_affine_translate.md
│   │   │   ├── 20191230_dont_import_msgs.md
│   │   │   ├── 20200103_standardized_shift_interfaces.md
│   │   │   ├── 20200112_simplified_augmenter_args.md
│   │   │   ├── 20200115_changed_defaults.md
│   │   │   └── 20200125_any_opencv_accepted.md
│   │   ├── deprecated/
│   │   │   ├── 20190926_rename_inplace.md
│   │   │   └── 20191230_deprecate_affinecv2.md
│   │   ├── fixed/
│   │   │   ├── 20190926_fixed_resize_dtype.md
│   │   │   ├── 20190928_fixed_affine_coords_aug.md
│   │   │   ├── 20190928_fixed_pwa_empty_kps_unaligned.md
│   │   │   ├── 20190928_fixed_type_val.md
│   │   │   ├── 20190929_fixed_assert_is_iterable_of.md
│   │   │   ├── 20191003_fixed_image_normalization.md
│   │   │   ├── 20191003_fixed_typo.md
│   │   │   ├── 20191006_fixed_withchannels_alignment.md
│   │   │   ├── 20191106_fixed_random_state_funcs_missing.md
│   │   │   ├── 20191110_fixed_affine_map_aug.md
│   │   │   ├── 20191111_fixed_snowflakeslayer_crash.md
│   │   │   ├── 20191111_multiplyhueandsaturation_rng.md
│   │   │   ├── 20191124_fixed_cloud_layer_float.md
│   │   │   ├── 20191128_fixed_affine_translate.md
│   │   │   ├── 20191128_fixed_hanging_nixos.md
│   │   │   ├── 20191217_collections_abc.md
│   │   │   ├── 20191218_fixed_fromfunction_deprecated.md
│   │   │   ├── 20191222_fixed_numpy_1_18.md
│   │   │   ├── 20191223_fixed_opencv_multicore_aug_hanging.md
│   │   │   ├── 20200110_fixed_seed.md
│   │   │   ├── 20200111_fixed_elastic_transformation_cval.md
│   │   │   ├── 20200113_fixed_weather_randomness.md
│   │   │   ├── 20200118_perspt_inaccuracy.md
│   │   │   ├── 20200122_fix_keepsizebyresize.md
│   │   │   └── 20200126_shapely_17a2.md
│   │   ├── refactored/
│   │   │   ├── 20191124_pylint.md
│   │   │   └── 20200111_opencv_normalization.md
│   │   └── renamed/
│   │       └── 20190926_rename_inplace.md
│   ├── master/
│   │   ├── 20200206_data_module.md
│   │   ├── changed/
│   │   │   ├── 20200222_shape_handling.md
│   │   │   └── 20200522_limit_dtype_support_alphablend.md
│   │   ├── fixed/
│   │   │   ├── 20200217_legacy_kp_aug_fallback.md
│   │   │   ├── 20200225_fix_imageio.md
│   │   │   ├── 20200412_fix_change_color_temperature.md
│   │   │   ├── 20200521_fix_skimage_slic_warning.md
│   │   │   ├── 20200522_fix_blend_alpha_f128.md
│   │   │   ├── 20200522_fix_mac_multiprocessing.md
│   │   │   ├── 20200522_fix_pad_f128.md
│   │   │   ├── 20200522_fix_permission_denied.md
│   │   │   ├── 20200525_fix_affine_cval_float.md
│   │   │   └── 20200601_fix_affine_skimage_order_0.md
│   │   ├── improved/
│   │   │   ├── 20200211_improve_performance_add.md
│   │   │   ├── 20200213_improved_blend_performance.md
│   │   │   ├── 20200216_add_elementwise_performance.md
│   │   │   ├── 20200216_improve_multiply_scalar_perf.md
│   │   │   ├── 20200216_improved_mul_elementwise_perf.md
│   │   │   ├── 20200217_vectorize_cropandpad.md
│   │   │   ├── 20200221_reworked_pooling.md
│   │   │   ├── 20200223_blur_avg.md
│   │   │   ├── 20200223_faster_elastic_tf.md
│   │   │   ├── 20200229_convolve.md
│   │   │   ├── 20200229_faster_invert.md
│   │   │   ├── 20200308_prefetching.md
│   │   │   ├── 20200315_segment_replacement.md
│   │   │   ├── 20200413_frequency_noise.md
│   │   │   ├── 20200517_faster_dtype_checks.md
│   │   │   ├── 20200521_improved_cicd_testing.md
│   │   │   ├── 20200522_tests_f128.md
│   │   │   └── 20200530_glass_blur_perf.md
│   │   └── refactored/
│   │       ├── 20200223_blur_gaussian.md
│   │       └── 20200314_affine.md
│   ├── v0.2.8.summary.md
│   ├── v0.2.9.summary.md
│   ├── v0.3.0.summary.md
│   └── v0.4.0.summary.md
├── checks/
│   ├── README.md
│   ├── check_add_to_hue_and_saturation.py
│   ├── check_affine.py
│   ├── check_affinecv2.py
│   ├── check_average_blur.py
│   ├── check_background_augmentation.py
│   ├── check_bb_augmentation.py
│   ├── check_bilateral_blur.py
│   ├── check_blendalphasegmapclassids.py
│   ├── check_blendalphasomecolors.py
│   ├── check_brightness.py
│   ├── check_canny.py
│   ├── check_cartoon.py
│   ├── check_channel_shuffle.py
│   ├── check_clouds.py
│   ├── check_color_temperature.py
│   ├── check_contrast.py
│   ├── check_crop_and_pad.py
│   ├── check_cutout.py
│   ├── check_deprecation_warning.py
│   ├── check_directed_edge_detect.py
│   ├── check_elastic_transformation.py
│   ├── check_fast_snowy_landscape.py
│   ├── check_fixed_size.py
│   ├── check_flip_performance.py
│   ├── check_fog.py
│   ├── check_heatmaps.py
│   ├── check_impulse_noise.py
│   ├── check_imshow.py
│   ├── check_jigsaw.py
│   ├── check_jpeg_compression.py
│   ├── check_kmeans_color_quantization.py
│   ├── check_laplace_noise.py
│   ├── check_mean_shift_blur.py
│   ├── check_median_blur.py
│   ├── check_motion_blur.py
│   ├── check_multicore_pool.py
│   ├── check_multiply_hue_and_saturation.py
│   ├── check_noise.py
│   ├── check_parameters.py
│   ├── check_performance.py
│   ├── check_perspective_transform.py
│   ├── check_piecewise_affine.py
│   ├── check_poisson_noise.py
│   ├── check_polygons_stay_valid_during_augmentation.py
│   ├── check_pooling.py
│   ├── check_quantize_uniform_to_n_bits.py
│   ├── check_rain.py
│   ├── check_randaugment.py
│   ├── check_readme_examples.py
│   ├── check_remove_saturation.py
│   ├── check_resize.py
│   ├── check_rot90.py
│   ├── check_seed.py
│   ├── check_segmentation_maps.py
│   ├── check_single_image_warning.py
│   ├── check_snowflakes.py
│   ├── check_snowflakes_layer.py
│   ├── check_solarize.py
│   ├── check_some_of.py
│   ├── check_superpixels.py
│   ├── check_uniform_color_quantization.py
│   ├── check_visually.py
│   ├── check_voronoi.py
│   ├── check_with_hue_and_saturation.py
│   ├── check_withchannels.py
│   └── check_withcolorspace.py
├── codecov.yml
├── imgaug/
│   ├── __init__.py
│   ├── augmentables/
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── batches.py
│   │   ├── bbs.py
│   │   ├── heatmaps.py
│   │   ├── kps.py
│   │   ├── lines.py
│   │   ├── normalization.py
│   │   ├── polys.py
│   │   ├── segmaps.py
│   │   └── utils.py
│   ├── augmenters/
│   │   ├── __init__.py
│   │   ├── arithmetic.py
│   │   ├── artistic.py
│   │   ├── base.py
│   │   ├── blend.py
│   │   ├── blur.py
│   │   ├── collections.py
│   │   ├── color.py
│   │   ├── contrast.py
│   │   ├── convolutional.py
│   │   ├── debug.py
│   │   ├── edges.py
│   │   ├── flip.py
│   │   ├── geometric.py
│   │   ├── imgcorruptlike.py
│   │   ├── meta.py
│   │   ├── overlay.py
│   │   ├── pillike.py
│   │   ├── pooling.py
│   │   ├── segmentation.py
│   │   ├── size.py
│   │   └── weather.py
│   ├── data.py
│   ├── dtypes.py
│   ├── external/
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── opensimplex.py
│   │   └── poly_point_isect_py2py3.py
│   ├── imgaug.py
│   ├── multicore.py
│   ├── parameters.py
│   ├── quokka_annotations.json
│   ├── random.py
│   ├── testutils.py
│   └── validation.py
├── pytest.ini
├── readthedocs.yml
├── requirements.txt
├── setup.cfg
├── setup.py
└── test/
    ├── augmentables/
    │   ├── test_batches.py
    │   ├── test_bbs.py
    │   ├── test_heatmaps.py
    │   ├── test_kps.py
    │   ├── test_lines.py
    │   ├── test_normalization.py
    │   ├── test_polys.py
    │   ├── test_segmaps.py
    │   └── test_utils.py
    ├── augmenters/
    │   ├── test_arithmetic.py
    │   ├── test_artistic.py
    │   ├── test_blend.py
    │   ├── test_blur.py
    │   ├── test_collections.py
    │   ├── test_color.py
    │   ├── test_contrast.py
    │   ├── test_convolutional.py
    │   ├── test_debug.py
    │   ├── test_edges.py
    │   ├── test_flip.py
    │   ├── test_geometric.py
    │   ├── test_imgcorruptlike.py
    │   ├── test_meta.py
    │   ├── test_mixed_files.py
    │   ├── test_overlay.py
    │   ├── test_pillike.py
    │   ├── test_pooling.py
    │   ├── test_segmentation.py
    │   ├── test_size.py
    │   └── test_weather.py
    ├── requirements.txt
    ├── run_doctests.sh
    ├── run_tests.sh
    ├── test_data.py
    ├── test_dtypes.py
    ├── test_imgaug.py
    ├── test_multicore.py
    ├── test_parameters.py
    └── test_random.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .codacy.yml
================================================
exclude_paths:
  - test/*
  - test/augmenters/*
  - test/augmentables/*
  - checks/*
  - imgaug/external/*
  - old_version/*
  - generate_documentation_images.py
  - generate_example_images.py


================================================
FILE: .github/workflows/build_wheels.yml
================================================
# This action generates wheel files for python 2 and 3.
name: build wheels

on:
  push:
    branches:
      - 'master'

jobs:
  build:

    # There were errors on Mac that would lead to non-stop printing of
    # error messages forever instead of the job crashing. To prevent this,
    # a timeout is placed here (default value is otherwise 360min).
    timeout-minutes: 30

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        # see supported versions at
        # https://raw.githubusercontent.com/actions/python-versions/master/versions-manifest.json
        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
        exclude:
          - os: windows-latest
            python-version: 2.7  # causes a Shapely install error
    env:
      OS: ${{ matrix.os }}
      PYTHON: ${{ matrix.python-version }}
    steps:
    - uses: actions/checkout@v2

    # ----------------
    # Install python and base packages
    # ----------------
    - name: Set up python ${{ matrix.python-version }} on ${{ runner.os }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}

    - name: Display python version
      run: |
        python -c "import sys; print(sys.version)"

    - name: Display system information
      run : |
        python -c "import sys; print(sys.maxsize);"
        python -c "import platform; print(platform.uname());"
        python -c "import platform; print(platform.platform());"
        python -c "import platform; print(platform.architecture());"
        python -c "import platform; print(platform.processor());"
        python -c "import platform; print(platform.python_compiler());"

    - name: Upgrade basic packages
      run: |
        python -m pip install --upgrade pip setuptools wheel

    # ----------------
    # Set up pip cache
    # ----------------
    - name: Get Date
      id: get-date
      run: |
        echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")"
      shell: bash

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'Linux')
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'macOS')
      with:
        path: ~/Library/Caches/pip
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'Windows')
      with:
        path: ~\AppData\Local\pip\Cache
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    # ----------------
    # Install dependencies
    # ----------------
    - name: Install dependencies
      run: |
        pip install -r requirements.txt

    # ----------------
    # Generate wheels
    # ----------------
    - name: Generate wheels
      run: |
        python setup.py sdist
        python setup.py bdist_wheel

    # ----------------
    # Upload artifacts
    # ----------------
    - uses: actions/upload-artifact@v2
      with:
        name: ${{ runner.os }}-py${{ matrix.python-version }}-dist
        path: dist/


================================================
FILE: .github/workflows/test_master.yml
================================================
# This is effectively identical to pr_or_push.yml, with the exceptions of:
# (1) This is only executed upon pushes to master
# (2) This executes tests for more different python versions
name: test master

on:
  push:
    branches:
      - 'master'

jobs:
  build:

    # There were errors on Mac that would lead to non-stop printing of
    # error messages forever instead of the job crashing. To prevent this,
    # a timeout is placed here (default value is otherwise 360min).
    # Usually, jobs currently run through in around 10min.
    timeout-minutes: 60

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        # see supported versions at
        # https://raw.githubusercontent.com/actions/python-versions/master/versions-manifest.json
        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
        exclude:
          - os: windows-latest
            python-version: 2.7  # causes a Shapely install error
    env:
      OS: ${{ matrix.os }}
      PYTHON: ${{ matrix.python-version }}
    steps:
    - uses: actions/checkout@v2

    # ----------------
    # Install python and base packages
    # ----------------
    - name: Set up Python ${{ matrix.python-version }} on ${{ runner.os }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}

    - name: Display python version
      run: |
        python -c "import sys; print(sys.version)"

    - name: Display system information
      run : |
        python -c "import sys; print(sys.maxsize);"
        python -c "import platform; print(platform.uname());"
        python -c "import platform; print(platform.platform());"
        python -c "import platform; print(platform.architecture());"
        python -c "import platform; print(platform.processor());"
        python -c "import platform; print(platform.python_compiler());"

    - name: Upgrade basic packages
      run: |
        python -m pip install --upgrade pip setuptools wheel

    # ----------------
    # Set up pip cache
    # ----------------
    - name: Get Date
      id: get-date
      run: |
        echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")"
      shell: bash

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'Linux')
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'macOS')
      with:
        path: ~/Library/Caches/pip
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'Windows')
      with:
        path: ~\AppData\Local\pip\Cache
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    # ----------------
    # Install dependencies
    # ----------------
    - name: Install dependencies
      run: |
        pip install -r requirements.txt

    - name: Install test dependencies
      run: |
        pip install --upgrade -r test/requirements.txt

    - name: Install further test tools
      run: |
        pip install coverage pytest-cov flake8

    # ----------------
    # Install library
    # ----------------
    - name: Install library
      run: |
        pip install .

    # ----------------
    # Run checks and tests
    # ----------------
    - name: Run flake8
      run: |
        flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude=".svn,CVS,.bzr,.hg,.git,__pycache__,poly_point_isect.py"

    - name: Run tests
      run: |
        python -m pytest --verbose --xdoctest-modules -s --durations=50 -Walways

    # ----------------
    # Code coverage reports
    # ----------------
    # Add 'coverage html -d out_foldername' to add html reports
    # Dont deactivate -Walways here, otherwise some tests fail as warnings
    # are no longer produced.
    - name: Generate code coverage report
      run: |
        coverage run --source imgaug -m pytest --verbose -Walways
        coverage xml
        coverage report

    #- name: Upload coverage report to codacy
    #  uses: codacy/codacy-coverage-reporter-action@master
    #  with:
    #    project-token: ${{ secrets.CODACY_TOKEN }}
    #    coverage-reports: coverage.xml

    - name: Upload coverage to Codecov
      uses: codecov/codecov-action@v1
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        file: ./coverage.xml
        flags: unittests
        # right now the env_vars argument causes a warning, see
        # https://github.com/codecov/codecov-action/issues/80
        #env_vars: OS,PYTHON
        name: codecov-umbrella
        fail_ci_if_error: false


================================================
FILE: .github/workflows/test_pull_requests.yml
================================================
name: test pull requests

on:
  push:
    branches:
      - '!master'
  pull_request:

jobs:
  build:

    # There were errors on Mac that would lead to non-stop printing of
    # error messages forever instead of the job crashing. To prevent this,
    # a timeout is placed here (default value is otherwise 360min).
    # Usually, jobs currently run through in around 10min.
    timeout-minutes: 45

    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        # see supported versions at
        # https://raw.githubusercontent.com/actions/python-versions/master/versions-manifest.json
        python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
        # test only 2.7 and the latest 3.x on mac
        # test only the latest 3.x on windows
        exclude:
          - os: macos-latest
            python-version: 3.5
          - os: macos-latest
            python-version: 3.6
          - os: macos-latest
            python-version: 3.7
          - os: windows-latest
            python-version: 2.7  # causes a Shapely install error
          - os: windows-latest
            python-version: 3.5
          - os: windows-latest
            python-version: 3.6
          - os: windows-latest
            python-version: 3.7
    env:
      OS: ${{ matrix.os }}
      PYTHON: ${{ matrix.python-version }}
    steps:
    - uses: actions/checkout@v2

    # ----------------
    # Install python and base packages
    # ----------------
    - name: Set up Python ${{ matrix.python-version }} on ${{ runner.os }}
      uses: actions/setup-python@v2
      with:
        python-version: ${{ matrix.python-version }}

    - name: Display python version
      run: |
        python -c "import sys; print(sys.version)"

    - name: Display system information
      run : |
        python -c "import sys; print(sys.maxsize);"
        python -c "import platform; print(platform.uname());"
        python -c "import platform; print(platform.platform());"
        python -c "import platform; print(platform.architecture());"
        python -c "import platform; print(platform.processor());"
        python -c "import platform; print(platform.python_compiler());"

    - name: Upgrade basic packages
      run: |
        python -m pip install --upgrade pip setuptools wheel

    # ----------------
    # Set up pip cache
    # ----------------
    - name: Get Date
      id: get-date
      run: |
        echo "::set-output name=date::$(/bin/date -u "+%Y%m%d")"
      shell: bash

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'Linux')
      with:
        path: ~/.cache/pip
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'macOS')
      with:
        path: ~/Library/Caches/pip
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    - uses: actions/cache@v1
      if: startsWith(runner.os, 'Windows')
      with:
        path: ~\AppData\Local\pip\Cache
        key: ${{ runner.os }}-pip-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/requirements.txt') }}
        restore-keys: |
          ${{ runner.os }}-pip-

    # ----------------
    # Install dependencies
    # ----------------
    - name: Install dependencies
      run: |
        pip install -r requirements.txt

    - name: Install test dependencies
      run: |
        pip install --upgrade -r test/requirements.txt

    - name: Install further test tools
      run: |
        pip install coverage pytest-cov flake8

    # ----------------
    # Install library
    # ----------------
    - name: Install library
      run: |
        pip install .

    # ----------------
    # Run checks and tests
    # ----------------
    - name: Run flake8
      run: |
        flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude=".svn,CVS,.bzr,.hg,.git,__pycache__,poly_point_isect.py"

    - name: Run tests
      run: |
        python -m pytest --verbose --xdoctest-modules -s --durations=50 -Walways

    # ----------------
    # Code coverage reports
    # ----------------
    # Add 'coverage html -d out_foldername' to add html reports
    # Dont deactivate -Walways here, otherwise some tests fail as warnings
    # are no longer produced.
    - name: Generate code coverage report
      run: |
        coverage run --source imgaug -m pytest --verbose -Walways
        coverage xml
        coverage report

    #- name: Upload coverage report to codacy
    #  uses: codacy/codacy-coverage-reporter-action@master
    #  with:
    #    project-token: ${{ secrets.CODACY_TOKEN }}
    #    coverage-reports: coverage.xml

    - name: Upload coverage to Codecov
      uses: codecov/codecov-action@v1
      with:
        token: ${{ secrets.CODECOV_TOKEN }}
        file: ./coverage.xml
        flags: unittests
        # right now the env_vars argument causes a warning, see
        # https://github.com/codecov/codecov-action/issues/80
        #env_vars: OS,PYTHON
        name: codecov-umbrella
        fail_ci_if_error: false


================================================
FILE: .gitignore
================================================
*.py~
*.rst~
*.md~
*.bak
*.lprof
reinstall.sh
reinstall_conda.sh
todo.txt
pypi-install-guide.txt
checks/bb_aug.jpg
checks/elastic_transformations.jpg
imgaug/parameters-testcode.py
imgaug/bak/*
imgaug/quokka_depth_map.xcf

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# PyCHarm
.idea/

# virtualenv
venv/

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover

# Translations
*.mo
*.pot

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/


================================================
FILE: .pylintrc
================================================
[MASTER]

# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=cv2,
                        scipy,
                        scipy.spatial,
                        numpy,
                        numpy.random,
                        numpy.random.bit_generator,
                        PIL,
                        PIL.Image,
                        PIL.ImageOps,
                        skimage,
                        skimage.feature,
                        skimage.transform,
                        skimage.segmentation

# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS

# Add files or directories matching the regex patterns to the blacklist. The
# regex matches against base names, not paths.
ignore-patterns=opensimplex\.py,
                poly_point_isect_py2py3\.py

# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=

# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the
# number of processors available to use.
jobs=1

# Control the amount of potential inferred values when inferring a single
# object. This can help the performance when dealing with large functions or
# complex, nested conditions.
limit-inference-results=100

# List of plugins (as comma separated values of python module names) to load,
# usually to register additional checkers.
load-plugins=

# Pickle collected data for later comparisons.
persistent=yes

# Specify a configuration file.
#rcfile=

# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes

# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no


[MESSAGES CONTROL]

# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.
confidence=

# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once). You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use "--disable=all --enable=classes
# --disable=W".
disable=print-statement,
        parameter-unpacking,
        unpacking-in-except,
        old-raise-syntax,
        backtick,
        long-suffix,
        old-ne-operator,
        old-octal-literal,
        import-star-module-level,
        non-ascii-bytes-literal,
        raw-checker-failed,
        bad-inline-option,
        locally-disabled,
        file-ignored,
        suppressed-message,
        useless-suppression,
        deprecated-pragma,
        use-symbolic-message-instead,
        apply-builtin,
        basestring-builtin,
        buffer-builtin,
        cmp-builtin,
        coerce-builtin,
        execfile-builtin,
        file-builtin,
        long-builtin,
        raw_input-builtin,
        reduce-builtin,
        standarderror-builtin,
        unicode-builtin,
        xrange-builtin,
        coerce-method,
        delslice-method,
        getslice-method,
        setslice-method,
        no-absolute-import,
        old-division,
        dict-iter-method,
        dict-view-method,
        next-method-called,
        metaclass-assignment,
        indexing-exception,
        raising-string,
        reload-builtin,
        oct-method,
        hex-method,
        nonzero-method,
        cmp-method,
        input-builtin,
        round-builtin,
        intern-builtin,
        unichr-builtin,
        map-builtin-not-iterating,
        zip-builtin-not-iterating,
        range-builtin-not-iterating,
        filter-builtin-not-iterating,
        using-cmp-argument,
        eq-without-hash,
        div-method,
        idiv-method,
        rdiv-method,
        exception-message-attribute,
        invalid-str-codec,
        sys-max-int,
        bad-python3-import,
        deprecated-string-function,
        deprecated-str-translate-call,
        deprecated-itertools-function,
        deprecated-types-field,
        next-method-defined,
        dict-items-not-iterating,
        dict-keys-not-iterating,
        dict-values-not-iterating,
        deprecated-operator-function,
        deprecated-urllib-function,
        xreadlines-attribute,
        deprecated-sys-function,
        exception-escape,
        comprehension-escape,
        # ------------- non-standard for imgaug -------------
        fixme,  # no warnings for TODOs
        line-too-long,  # required for type definitions in docstrings
        too-many-lines,  # currently unfulfillable
        useless-object-inheritance,  # pylint complains that Foo(object) shouldn't be used anymore in py3+, but is required for py2.7
        import-outside-toplevel,  # necessary e.g. for optional dependencies
        too-many-arguments,
        too-many-branches,
        too-many-locals,
        too-many-instance-attributes,
        too-few-public-methods,
        too-many-public-methods,
        too-many-return-statements,
        too-many-statements,
        too-many-ancestors,
        len-as-condition,  # more annoying than useful warning, suggestion doesn't even work with np arrays
        unused-argument,  # without this pylint complains about almost every _augment_batch() implementation not using 'parents' and 'hooks'; due to inheritance we can't do anything about that
        no-self-use,  # without this pylint complains about every get_parameters() implementation that returns only []; due to inheritance we can't do anything about that
        protected-access,  # we use plenty of calls of functions that are only marked private to discourage calls of them from outside of the library, but not from within the library

# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
enable=c-extension-no-member


[REPORTS]

# Python expression which should return a score less than or equal to 10. You
# have access to the variables 'error', 'warning', 'refactor', and 'convention'
# which contain the number of messages in each category, as well as 'statement'
# which is the total number of statements analyzed. This score is used by the
# global evaluation report (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)

# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details.
#msg-template=

# Set the output format. Available formats are text, parseable, colorized, json
# and msvs (visual studio). You can also give a reporter class, e.g.
# mypackage.mymodule.MyReporterClass.
output-format=text

# Tells whether to display a full report or only the messages.
reports=no

# Activate the evaluation score.
score=yes


[REFACTORING]

# Maximum number of nested blocks for function / method body
max-nested-blocks=5

# Complete name of functions that never returns. When checking for
# inconsistent-return-statements if a never returning function is called then
# it will be considered as an explicit return statement and no message will be
# printed.
never-returning-functions=sys.exit


[FORMAT]

# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=

# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$

# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4

# String used as indentation unit. This is usually "    " (4 spaces) or "\t" (1
# tab).
indent-string='    '

# Maximum number of characters on a single line.
max-line-length=100

# Maximum number of lines in a module.
max-module-lines=1000

# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1  : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=trailing-comma,
               dict-separator

# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.
single-line-class-stmt=no

# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no


[LOGGING]

# Format style used to check logging format string. `old` means using %
# formatting, `new` is for `{}` formatting,and `fstr` is for f-strings.
logging-format-style=old

# Logging modules to check that the string format arguments are in logging
# function parameter format.
logging-modules=logging


[SIMILARITIES]

# Ignore comments when computing similarities.
ignore-comments=yes

# Ignore docstrings when computing similarities.
ignore-docstrings=yes

# Ignore imports when computing similarities.
ignore-imports=no

# Minimum lines number of a similarity.
min-similarity-lines=8


[TYPECHECK]

# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager

# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=

# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes

# Tells whether to warn about missing members when the owner of the attribute
# is inferred to be None.
ignore-none=yes

# This flag controls whether pylint should warn about no-member and similar
# checks whenever an opaque object is returned when inferring. The inference
# can return multiple potential results while evaluating a Python object, but
# some branches might not be evaluated, which results in partial inference. In
# that case, it might be useful to still emit no-member and other checks for
# the rest of the inferred objects.
ignore-on-opaque-inference=yes

# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
ignored-classes=optparse.Values,thread._local,_thread._local

# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis). It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=

# Show a hint with possible names when a member name was not found. The aspect
# of finding the hint is based on edit distance.
missing-member-hint=yes

# The minimum edit distance a name should have in order to be considered a
# similar match for a missing member name.
missing-member-hint-distance=1

# The total number of similar names that should be taken in consideration when
# showing a hint for a missing member.
missing-member-max-choices=1

# List of decorators that change the signature of a decorated function.
signature-mutators=


[BASIC]

# Naming style matching correct argument names.
argument-naming-style=snake_case

# Regular expression matching correct argument names. Overrides argument-
# naming-style.
#argument-rgx=

# Naming style matching correct attribute names.
attr-naming-style=snake_case

# Regular expression matching correct attribute names. Overrides attr-naming-
# style.
#attr-rgx=

# Bad variable names which should always be refused, separated by a comma.
bad-names=foo,
          bar,
          baz,
          toto,
          tutu,
          tata

# Naming style matching correct class attribute names.
class-attribute-naming-style=any

# Regular expression matching correct class attribute names. Overrides class-
# attribute-naming-style.
#class-attribute-rgx=

# Naming style matching correct class names.
class-naming-style=PascalCase

# Regular expression matching correct class names. Overrides class-naming-
# style.
#class-rgx=

# Naming style matching correct constant names.
const-naming-style=UPPER_CASE

# Regular expression matching correct constant names. Overrides const-naming-
# style.
#const-rgx=

# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1

# Naming style matching correct function names.
function-naming-style=snake_case

# Regular expression matching correct function names. Overrides function-
# naming-style.
#function-rgx=

# Good variable names which should always be accepted, separated by a comma.
good-names=i,
           j,
           k,
           ex,
           Run,
           _,
           # ------- imgaug-specific settings -------
           n,    # number
           h,    # height
           w,    # width
           c,    # channel index
           x,    # x-coordinate
           y,    # y-coordinate
           z,    # z-coordinate
           xy,   # xy-coordinate pair
           xx,   # x-coordinates
           yy,   # y-coordinates
           zz,   # z-coordinates
           dx,   # some difference/shift in x
           dy,
           dz,
           x1,   # bounding box top left x-coordinate
           x2,   # bounding box bottom right x-coordinate
           x3,
           x4,
           y1,   # bounding box top left y-coordinate
           y2,   # bounding box bottom right x-coordinate
           y3,
           y4,
           p,    # probability
           bb,   # bounding box
           bbs,  # bounding boxes
           kp,   # keypoint
           kps,  # keypoints
           ls,   # line string
           lss,  # line strings
           rs,   # random state
           ax,   # matplotlib axis
           f     # file handle for 'open(...) as f:'

# Include a hint for the correct naming format with invalid-name.
include-naming-hint=no

# Naming style matching correct inline iteration names.
inlinevar-naming-style=any

# Regular expression matching correct inline iteration names. Overrides
# inlinevar-naming-style.
#inlinevar-rgx=

# Naming style matching correct method names.
method-naming-style=snake_case

# Regular expression matching correct method names. Overrides method-naming-
# style.
#method-rgx=

# Naming style matching correct module names.
module-naming-style=snake_case

# Regular expression matching correct module names. Overrides module-naming-
# style.
#module-rgx=

# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=

# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=^_

# List of decorators that produce properties, such as abc.abstractproperty. Add
# to this list to register other decorators that produce valid properties.
# These decorators are taken in consideration only for invalid-name.
property-classes=abc.abstractproperty

# Naming style matching correct variable names.
variable-naming-style=snake_case

# Regular expression matching correct variable names. Overrides variable-
# naming-style.
#variable-rgx=


[VARIABLES]

# List of additional names supposed to be defined in builtins. Remember that
# you should avoid defining new builtins when possible.
additional-builtins=

# Tells whether unused global variables should be treated as a violation.
allow-global-unused-variables=yes

# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,
          _cb

# A regular expression matching the name of dummy variables (i.e. expected to
# not be used).
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_

# Argument names that match this expression will be ignored. Default to name
# with leading underscore.
ignored-argument-names=_.*|^ignored_|^unused_

# Tells whether we should check for unused import in __init__ files.
init-import=no

# List of qualified module names which can have objects that can redefine
# builtins.
redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io


[MISCELLANEOUS]

# List of note tags to take in consideration, separated by a comma.
notes=FIXME,
      XXX,
      TODO


[SPELLING]

# Limits count of emitted suggestions for spelling mistakes.
max-spelling-suggestions=4

# Spelling dictionary name. Available dictionaries: none. To make it work,
# install the python-enchant package.
spelling-dict=

# List of comma separated words that should not be checked.
spelling-ignore-words=

# A path to a file that contains the private dictionary; one word per line.
spelling-private-dict-file=

# Tells whether to store unknown words to the private dictionary (see the
# --spelling-private-dict-file option) instead of raising a message.
spelling-store-unknown-words=no


[STRING]

# This flag controls whether the implicit-str-concat-in-sequence should
# generate a warning on implicit string concatenation in sequences defined over
# several lines.
check-str-concat-over-line-jumps=no


[DESIGN]

# Maximum number of arguments for function / method.
max-args=5

# Maximum number of attributes for a class (see R0902).
max-attributes=7

# Maximum number of boolean expressions in an if statement (see R0916).
max-bool-expr=5

# Maximum number of branch for function / method body.
max-branches=12

# Maximum number of locals for function / method body.
max-locals=15

# Maximum number of parents for a class (see R0901).
max-parents=7

# Maximum number of public methods for a class (see R0904).
max-public-methods=20

# Maximum number of return / yield for function / method body.
max-returns=6

# Maximum number of statements in function / method body.
max-statements=50

# Minimum number of public methods for a class (see R0903).
min-public-methods=2


[IMPORTS]

# List of modules that can be imported at any level, not just the top level
# one.
allow-any-import-level=

# Allow wildcard imports from modules that define __all__.
allow-wildcard-with-all=no

# Analyse import fallback blocks. This can be used to support both Python 2 and
# 3 compatible code, which means that the block might have code that exists
# only in one or another interpreter, leading to false positives when analysed.
analyse-fallback-blocks=no

# Deprecated modules which should not be used, separated by a comma.
deprecated-modules=optparse,tkinter.tix

# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled).
ext-import-graph=

# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled).
import-graph=

# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled).
int-import-graph=

# Force import order to recognize a module as part of the standard
# compatibility libraries.
known-standard-library=

# Force import order to recognize a module as part of a third party library.
known-third-party=enchant

# Couples of modules and preferred modules, separated by a comma.
preferred-modules=


[CLASSES]

# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,
                      __new__,
                      setUp,
                      __post_init__

# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,
                  _fields,
                  _replace,
                  _source,
                  _make

# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls

# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=cls


[EXCEPTIONS]

# Exceptions that will emit a warning when being caught. Defaults to
# "BaseException, Exception".
overgeneral-exceptions=BaseException,
                       Exception


================================================
FILE: .travis.yml
================================================
sudo: required

dist: trusty

language:
  - python
  - cpp

env:
  global:
    - CODACY_PROJECT_TOKEN=1370ce38e99e40af842d47a8dd721444

cache:
  directories:
    - $HOME/.cache/pip

python:
  - "2.7"
  # - "3.2"  # downloads np 1.17 on travis (?!), which doesn't support 3.2
  # - "3.3"  # downloads np 1.17 on travis (?!), which doesn't support 3.3
  - "3.4"
  - "3.5"
  - "3.6"
  # - "3.7"  # python version cannot be installed on travis

before_install:
  - sudo apt-get update -qq
  - sudo apt-get install -qq -y python-virtualenv
  # otherwise imagecodecs fails to build on py3.6,
  # see https://github.com/scikit-image/scikit-image/issues/4673
  - pip install --upgrade pip

install:
# TODO why was this deactivated?
#  - virtualenv venv
#  - . venv/bin/activate
  - pip install -r requirements.txt
  # Added --upgrade, because at least pytest already came from some other
  # install command and so version was never checked
  - pip install --upgrade -r test/requirements.txt
  - pip install coverage codecov pytest-cov codacy-coverage
  - pip install .

before_script:
  - pip install flake8
  # Stop the build if there are Python syntax errors or undefined names.
  #
  # We exclude poly_point_isect.py because it is incompatible with python2
  # and poly_point_isect_py2py3.py is actually used instead. The incompatible
  # file exists in the repo only for comparison. There are some other patterns
  # added to --exclude, which are the default values for flake8's exclude
  # option.
  - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics --exclude=".svn,CVS,.bzr,.hg,.git,__pycache__,poly_point_isect.py"
  # exit-zero treats all errors as warnings.  The GitHub editor is 127 chars wide
  # currently deactivated as style guidelines are not yet kept in the project
  # TODO change this
  #- flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics

script:
  - python -m pytest --verbose --xdoctest-modules --ignore="test/run_all.py" -s --durations=50 -Walways
  - coverage run --source imgaug -m pytest --verbose --xdoctest-modules --ignore="test/run_all.py" -Walways

# some steps are now done in github action
after_success:
#  - codecov -t feeff9b2-3750-4246-befb-8cde60dc28aa
  - coverage xml
  - python-codacy-coverage -r coverage.xml
#  - coverage report


================================================
FILE: CHANGELOG.md
================================================
This file is no longer used.
See `changelogs/` for all current and previous changelogs.


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) 2015 aleju

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



================================================
FILE: MANIFEST.in
================================================
include setup.py
include setup.cfg
include LICENSE
include MANIFEST.in
include README.md
include requirements.txt
recursive-include imgaug *.py *.jpg *.ttf *.png *.json
prune test

================================================
FILE: README.md
================================================
# imgaug

This python library helps you with augmenting images for your machine learning projects.
It converts a set of input images into a new, much larger set of slightly altered images.

[![Build Status](https://travis-ci.org/aleju/imgaug.svg?branch=master)](https://travis-ci.org/aleju/imgaug)
[![codecov](https://codecov.io/gh/aleju/imgaug/branch/master/graph/badge.svg)](https://codecov.io/gh/aleju/imgaug)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/1370ce38e99e40af842d47a8dd721444)](https://www.codacy.com/app/aleju/imgaug?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=aleju/imgaug&amp;utm_campaign=Badge_Grade)

<table>

<tr>
<th>&nbsp;</th>
<th>Image</th>
<th>Heatmaps</th>
<th>Seg. Maps</th>
<th>Keypoints</th>
<th>Bounding Boxes,<br>Polygons</th>
</tr>

<!-- Line 1: Original Input -->
<tr>
<td><em>Original Input</em></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/noop_image.jpg?raw=true" height="83" width="124" alt="input images"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/noop_heatmap.jpg?raw=true" height="83" width="124" alt="input heatmaps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/noop_segmap.jpg?raw=true" height="83" width="124" alt="input segmentation maps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/noop_kps.jpg?raw=true" height="83" width="124" alt="input keypoints"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/noop_bbs.jpg?raw=true" height="83" width="124" alt="input bounding boxes"></td>
</tr>

<!-- Line 2: Gauss. Noise + Contrast + Sharpen -->
<tr>
<td>Gauss. Noise<br>+&nbsp;Contrast<br>+&nbsp;Sharpen</td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/non_geometric_image.jpg?raw=true" height="83" width="124" alt="non geometric augmentations, applied to images"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/non_geometric_heatmap.jpg?raw=true" height="83" width="124" alt="non geometric augmentations, applied to heatmaps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/non_geometric_segmap.jpg?raw=true" height="83" width="124" alt="non geometric augmentations, applied to segmentation maps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/non_geometric_kps.jpg?raw=true" height="83" width="124" alt="non geometric augmentations, applied to keypoints"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/non_geometric_bbs.jpg?raw=true" height="83" width="124" alt="non geometric augmentations, applied to bounding boxes"></td>
</tr>

<!-- Line 3: Affine -->
<tr>
<td>Affine</td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/affine_image.jpg?raw=true" height="83" width="124" alt="affine augmentations, applied to images"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/affine_heatmap.jpg?raw=true" height="83" width="124" alt="affine augmentations, applied to heatmaps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/affine_segmap.jpg?raw=true" height="83" width="124" alt="affine augmentations, applied to segmentation maps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/affine_kps.jpg?raw=true" height="83" width="124" alt="affine augmentations, applied to keypoints"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/affine_bbs.jpg?raw=true" height="83" width="124" alt="affine augmentations, applied to bounding boxes"></td>
</tr>

<!-- Line 4: Crop + Pad -->
<tr>
<td>Crop<br>+&nbsp;Pad</td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/cropandpad_image.jpg?raw=true" height="83" width="124" alt="crop and pad augmentations, applied to images"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/cropandpad_heatmap.jpg?raw=true" height="83" width="124" alt="crop and pad augmentations, applied to heatmaps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/cropandpad_segmap.jpg?raw=true" height="83" width="124" alt="crop and pad augmentations, applied to segmentation maps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/cropandpad_kps.jpg?raw=true" height="83" width="124" alt="crop and pad augmentations, applied to keypoints"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/cropandpad_bbs.jpg?raw=true" height="83" width="124" alt="crop and pad augmentations, applied to bounding boxes"></td>
</tr>

<!-- Line 5: Fliplr + Perspective -->
<tr>
<td>Fliplr<br>+&nbsp;Perspective</td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/fliplr_perspective_image.jpg" height="83" width="124" alt="Horizontal flip and perspective transform augmentations, applied to images"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/fliplr_perspective_heatmap.jpg?raw=true" height="83" width="124" alt="Horizontal flip and perspective transform augmentations, applied to heatmaps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/fliplr_perspective_segmap.jpg?raw=true" height="83" width="124" alt="Horizontal flip and perspective transform augmentations, applied to segmentation maps"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/fliplr_perspective_kps.jpg?raw=true" height="83" width="124" alt="Horizontal flip and perspective transform augmentations, applied to keypoints"></td>
<td><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/small_overview/fliplr_perspective_bbs.jpg?raw=true" height="83" width="124" alt="Horizontal flip and perspective transform augmentations, applied to bounding boxes"></td>
</tr>

</table>


**More (strong) example augmentations of one input image:**

![64 quokkas](https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/examples_grid.jpg?raw=true "64 quokkas")


## Table of Contents

1. [Features](#features)
2. [Installation](#installation)
3. [Documentation](#documentation)
4. [Recent Changes](#recent_changes)
5. [Example Images](#example_images)
6. [Code Examples](#code_examples)
7. [Citation](#citation)


<a name="features"/>

## Features

* Many augmentation techniques
  * E.g. affine transformations, perspective transformations, contrast changes, gaussian noise, dropout of regions, hue/saturation changes, cropping/padding, blurring, ...
  * Optimized for high performance
  * Easy to apply augmentations only to some images
  * Easy to apply augmentations in random order
* Support for
  * Images (full support for uint8, for other dtypes see [documentation](https://imgaug.readthedocs.io/en/latest/source/dtype_support.html))
  * Heatmaps (float32), Segmentation Maps (int), Masks (bool)
    * May be smaller/larger than their corresponding images. *No* extra lines of code needed for e.g. crop.
  * Keypoints/Landmarks (int/float coordinates)
  * Bounding Boxes (int/float coordinates)
  * Polygons (int/float coordinates)
  * Line Strings (int/float coordinates)
* Automatic alignment of sampled random values
  * Example: Rotate image and segmentation map on it by the same value sampled from `uniform(-10°, 45°)`. (0 extra lines of code.)
* Probability distributions as parameters
  * Example: Rotate images by values sampled from `uniform(-10°, 45°)`.
  * Example: Rotate images by values sampled from `ABS(N(0, 20.0))*(1+B(1.0, 1.0))`", where `ABS(.)` is the absolute function, `N(.)` the gaussian distribution and `B(.)` the beta distribution.
* Many helper functions
  * Example: Draw heatmaps, segmentation maps, keypoints, bounding boxes, ...
  * Example: Scale segmentation maps, average/max pool of images/maps, pad images to aspect
    ratios (e.g. to square them)
  * Example: Convert keypoints to distance maps, extract pixels within bounding boxes from images, clip polygon to the image plane, ...
* Support for augmentation on multiple CPU cores


<a name="installation"/>

## Installation

The library supports python 2.7 and 3.4+.

### Installation: Anaconda

To install the library in anaconda, perform the following commands:
```bash
conda config --add channels conda-forge
conda install imgaug
```

You can deinstall the library again via `conda remove imgaug`.

### Installation: pip

Then install imgaug either via pypi (can lag behind the github version):
```bash
pip install imgaug
```

or install the latest version directly from github:
```bash
pip install git+https://github.com/aleju/imgaug.git
```

For more details, see the [install guide](https://imgaug.readthedocs.io/en/latest/source/installation.html)

To deinstall the library, just execute `pip uninstall imgaug`.


<a name="documentation"/>

## Documentation

Example jupyter notebooks:
  * [Load and Augment an Image](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/A01%20-%20Load%20and%20Augment%20an%20Image.ipynb)
  * [Multicore Augmentation](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/A03%20-%20Multicore%20Augmentation.ipynb)
  * Augment and work with: [Keypoints/Landmarks](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/B01%20-%20Augment%20Keypoints.ipynb),
    [Bounding Boxes](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/B02%20-%20Augment%20Bounding%20Boxes.ipynb),
    [Polygons](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/B03%20-%20Augment%20Polygons.ipynb),
    [Line Strings](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/B06%20-%20Augment%20Line%20Strings.ipynb),
    [Heatmaps](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/B04%20-%20Augment%20Heatmaps.ipynb),
    [Segmentation Maps](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/B05%20-%20Augment%20Segmentation%20Maps.ipynb) 

More notebooks: [imgaug-doc/notebooks](https://github.com/aleju/imgaug-doc/tree/master/notebooks).

Example ReadTheDocs pages:
* [Quick example code on how to use the library](http://imgaug.readthedocs.io/en/latest/source/examples_basics.html)
* [Overview of all Augmenters](https://imgaug.readthedocs.io/en/latest/source/overview_of_augmenters.html)
* [API](http://imgaug.readthedocs.io/en/latest/source/api.html)

More RTD documentation: [imgaug.readthedocs.io](http://imgaug.readthedocs.io/en/latest/source/examples_basics.html).

All documentation related files of this project are hosted in the
repository [imgaug-doc](https://github.com/aleju/imgaug-doc).


<a name="recent_changes"/>

## Recent Changes

* **0.4.0**: Added new augmenters, changed backend to batchwise augmentation,
  support for numpy 1.18 and python 3.8.
* **0.3.0**: Reworked segmentation map augmentation, adapted to numpy 1.17+
  random number sampling API, several new augmenters.
* **0.2.9**: Added polygon augmentation, added line string augmentation,
  simplified augmentation interface.
* **0.2.8**: Improved performance, dtype support and multicore augmentation.

See [changelogs/](changelogs/) for more details.


<a name="example_images"/>

## Example Images

The images below show examples for most augmentation techniques.

Values written in the form `(a, b)` denote a uniform distribution,
i.e. the value is randomly picked from the interval `[a, b]`.
Line strings are supported by (almost) all augmenters, but are not explicitly
visualized here.

<table>

<tr><td colspan="5"><strong>meta</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#identity">Identity</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#channelshuffle">ChannelShuffle</a></sub></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/meta/identity.gif" height="148" width="100" alt="Identity"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/meta/channelshuffle.gif" height="148" width="100" alt="ChannelShuffle"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#sequential">Sequential</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#someof">SomeOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#oneof">OneOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#sometimes">Sometimes</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#withchannels">WithChannels</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#lambda">Lambda</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#assertlambda">AssertLambda</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#assertshape">AssertShape</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#removecbasbyoutofimagefraction">RemoveCBAsByOutOfImageFraction</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/meta.html#clipcbastoimageplanes">ClipCBAsToImagePlanes</a></td>
</tr>
<tr><td colspan="5"><strong>arithmetic</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#add">Add</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#add">Add</a><br/>(per_channel=True)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#additivegaussiannoise">AdditiveGaussianNoise</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#additivegaussiannoise">AdditiveGaussianNoise</a><br/>(per_channel=True)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#multiply">Multiply</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/add.gif" height="148" width="100" alt="Add"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/add_per_channel_true.gif" height="148" width="100" alt="Add per_channel=True"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/additivegaussiannoise.gif" height="148" width="100" alt="AdditiveGaussianNoise"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/additivegaussiannoise_per_channel_true.gif" height="148" width="100" alt="AdditiveGaussianNoise per_channel=True"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/multiply.gif" height="148" width="100" alt="Multiply"></td>
</tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#cutout">Cutout</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#dropout">Dropout</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#coarsedropout">CoarseDropout</a><br/>(p=0.2)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#coarsedropout">CoarseDropout</a><br/>(p=0.2, per_channel=True)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#dropout2d">Dropout2d</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/cutout.gif" height="148" width="100" alt="Cutout"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/dropout.gif" height="148" width="100" alt="Dropout"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/coarsedropout_p_0_2.gif" height="148" width="100" alt="CoarseDropout p=0.2"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/coarsedropout_p_0_2_per_channel_true.gif" height="148" width="100" alt="CoarseDropout p=0.2, per_channel=True"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/dropout2d.gif" height="148" width="100" alt="Dropout2d"></td>
</tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#saltandpepper">SaltAndPepper</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#coarsesaltandpepper">CoarseSaltAndPepper</a><br/>(p=0.2)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#invert">Invert</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#solarize">Solarize</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#jpegcompression">JpegCompression</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/saltandpepper.gif" height="148" width="100" alt="SaltAndPepper"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/coarsesaltandpepper_p_0_2.gif" height="148" width="100" alt="CoarseSaltAndPepper p=0.2"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/invert.gif" height="148" width="100" alt="Invert"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/solarize.gif" height="148" width="100" alt="Solarize"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/arithmetic/jpegcompression.gif" height="148" width="100" alt="JpegCompression"></td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#addelementwise">AddElementwise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#additivelaplacenoise">AdditiveLaplaceNoise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#additivepoissonnoise">AdditivePoissonNoise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#multiplyelementwise">MultiplyElementwise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#totaldropout">TotalDropout</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#replaceelementwise">ReplaceElementwise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#impulsenoise">ImpulseNoise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#salt">Salt</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#pepper">Pepper</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#coarsesalt">CoarseSalt</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#coarsepepper">CoarsePepper</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/arithmetic.html#solarize">Solarize</a></td>
</tr>
<tr><td colspan="5"><strong>artistic</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/artistic.html#cartoon">Cartoon</a></sub></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/artistic/cartoon.gif" height="144" width="128" alt="Cartoon"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr><td colspan="5"><strong>blend</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalpha">BlendAlpha</a><br/>with EdgeDetect(1.0)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphasimplexnoise">BlendAlphaSimplexNoise</a><br/>with EdgeDetect(1.0)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphafrequencynoise">BlendAlphaFrequencyNoise</a><br/>with EdgeDetect(1.0)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphasomecolors">BlendAlphaSomeColors</a><br/>with RemoveSaturation(1.0)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalpharegulargrid">BlendAlphaRegularGrid</a><br/>with Multiply((0.0, 0.5))</sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blend/blendalpha_with_edgedetect_1_0.gif" height="148" width="100" alt="BlendAlpha with EdgeDetect1.0"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blend/blendalphasimplexnoise_with_edgedetect_1_0.gif" height="148" width="100" alt="BlendAlphaSimplexNoise with EdgeDetect1.0"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blend/blendalphafrequencynoise_with_edgedetect_1_0.gif" height="148" width="100" alt="BlendAlphaFrequencyNoise with EdgeDetect1.0"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blend/blendalphasomecolors_with_removesaturation_1_0.gif" height="144" width="128" alt="BlendAlphaSomeColors with RemoveSaturation1.0"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blend/blendalpharegulargrid_with_multiply_0_0_0_5.gif" height="148" width="100" alt="BlendAlphaRegularGrid with Multiply0.0, 0.5"></td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphamask">BlendAlphaMask</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphaelementwise">BlendAlphaElementwise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphaverticallineargradient">BlendAlphaVerticalLinearGradient</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphahorizontallineargradient">BlendAlphaHorizontalLinearGradient</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphasegmapclassids">BlendAlphaSegMapClassIds</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphaboundingboxes">BlendAlphaBoundingBoxes</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/blend.html#blendalphacheckerboard">BlendAlphaCheckerboard</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_blend.html#imgaug.augmenters.blend.SomeColorsMaskGen">SomeColorsMaskGen</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_blend.html#imgaug.augmenters.blend.HorizontalLinearGradientMaskGen">HorizontalLinearGradientMaskGen</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_blend.html#imgaug.augmenters.blend.VerticalLinearGradientMaskGen">VerticalLinearGradientMaskGen</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_blend.html#imgaug.augmenters.blend.RegularGridMaskGen">RegularGridMaskGen</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_blend.html#imgaug.augmenters.blend.CheckerboardMaskGen">CheckerboardMaskGen</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_blend.html#imgaug.augmenters.blend.SegMapClassIdsMaskGen">SegMapClassIdsMaskGen</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_blend.html#imgaug.augmenters.blend.BoundingBoxesMaskGen">BoundingBoxesMaskGen</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_blend.html#imgaug.augmenters.blend.InvertMaskGen">InvertMaskGen</a></td>
</tr>
<tr><td colspan="5"><strong>blur</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blur.html#gaussianblur">GaussianBlur</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blur.html#averageblur">AverageBlur</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blur.html#medianblur">MedianBlur</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blur.html#bilateralblur">BilateralBlur</a><br/>(sigma_color=250,<br/>sigma_space=250)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blur.html#motionblur">MotionBlur</a><br/>(angle=0)</sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blur/gaussianblur.gif" height="148" width="100" alt="GaussianBlur"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blur/averageblur.gif" height="148" width="100" alt="AverageBlur"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blur/medianblur.gif" height="148" width="100" alt="MedianBlur"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blur/bilateralblur_sigma_color_250_sigma_space_250.gif" height="148" width="100" alt="BilateralBlur sigma_color=250, sigma_space=250"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blur/motionblur_angle_0.gif" height="148" width="100" alt="MotionBlur angle=0"></td>
</tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blur.html#motionblur">MotionBlur</a><br/>(k=5)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/blur.html#meanshiftblur">MeanShiftBlur</a></sub></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blur/motionblur_k_5.gif" height="148" width="100" alt="MotionBlur k=5"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/blur/meanshiftblur.gif" height="148" width="100" alt="MeanShiftBlur"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr><td colspan="5"><strong>collections</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/collections.html#randaugment">RandAugment</a></sub></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/collections/randaugment.gif" height="148" width="100" alt="RandAugment"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr><td colspan="5"><strong>color</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#multiplyandaddtobrightness">MultiplyAndAddToBrightness</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#multiplyhueandsaturation">MultiplyHueAndSaturation</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#multiplyhue">MultiplyHue</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#multiplysaturation">MultiplySaturation</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#addtohueandsaturation">AddToHueAndSaturation</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/multiplyandaddtobrightness.gif" height="148" width="100" alt="MultiplyAndAddToBrightness"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/multiplyhueandsaturation.gif" height="148" width="100" alt="MultiplyHueAndSaturation"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/multiplyhue.gif" height="148" width="100" alt="MultiplyHue"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/multiplysaturation.gif" height="148" width="100" alt="MultiplySaturation"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/addtohueandsaturation.gif" height="148" width="100" alt="AddToHueAndSaturation"></td>
</tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#grayscale">Grayscale</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#removesaturation">RemoveSaturation</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#changecolortemperature">ChangeColorTemperature</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#kmeanscolorquantization">KMeansColorQuantization</a><br/>(to_colorspace=RGB)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#uniformcolorquantization">UniformColorQuantization</a><br/>(to_colorspace=RGB)</sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/grayscale.gif" height="148" width="100" alt="Grayscale"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/removesaturation.gif" height="148" width="100" alt="RemoveSaturation"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/changecolortemperature.gif" height="148" width="100" alt="ChangeColorTemperature"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/kmeanscolorquantization_to_colorspace_rgb.gif" height="148" width="100" alt="KMeansColorQuantization to_colorspace=RGB"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/color/uniformcolorquantization_to_colorspace_rgb.gif" height="148" width="100" alt="UniformColorQuantization to_colorspace=RGB"></td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#withcolorspace">WithColorspace</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#withbrightnesschannels">WithBrightnessChannels</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#multiplybrightness">MultiplyBrightness</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#addtobrightness">AddToBrightness</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#withhueandsaturation">WithHueAndSaturation</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#addtohue">AddToHue</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#addtosaturation">AddToSaturation</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#changecolorspace">ChangeColorspace</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#posterize">Posterize</a></td>
</tr>
<tr><td colspan="5"><strong>contrast</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#gammacontrast">GammaContrast</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#gammacontrast">GammaContrast</a><br/>(per_channel=True)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#sigmoidcontrast">SigmoidContrast</a><br/>(cutoff=0.5)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#sigmoidcontrast">SigmoidContrast</a><br/>(gain=10)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#logcontrast">LogContrast</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/gammacontrast.gif" height="148" width="100" alt="GammaContrast"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/gammacontrast_per_channel_true.gif" height="148" width="100" alt="GammaContrast per_channel=True"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/sigmoidcontrast_cutoff_0_5.gif" height="148" width="100" alt="SigmoidContrast cutoff=0.5"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/sigmoidcontrast_gain_10.gif" height="148" width="100" alt="SigmoidContrast gain=10"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/logcontrast.gif" height="148" width="100" alt="LogContrast"></td>
</tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#linearcontrast">LinearContrast</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#allchannelshistogramequalization">AllChannels-</a><br/>HistogramEqualization</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#histogramequalization">HistogramEqualization</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#allchannelsclahe">AllChannelsCLAHE</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#clahe">CLAHE</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/linearcontrast.gif" height="148" width="100" alt="LinearContrast"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/allchannels_histogramequalization.gif" height="148" width="100" alt="AllChannels- HistogramEqualization"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/histogramequalization.gif" height="148" width="100" alt="HistogramEqualization"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/allchannelsclahe.gif" height="148" width="100" alt="AllChannelsCLAHE"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/contrast/clahe.gif" height="148" width="100" alt="CLAHE"></td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/contrast.html#equalize">Equalize</a></td>
</tr>
<tr><td colspan="5"><strong>convolutional</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/convolutional.html#sharpen">Sharpen</a><br/>(alpha=1)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/convolutional.html#emboss">Emboss</a><br/>(alpha=1)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/convolutional.html#edgedetect">EdgeDetect</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/convolutional.html#directededgedetect">DirectedEdgeDetect</a><br/>(alpha=1)</sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/convolutional/sharpen_alpha_1.gif" height="148" width="100" alt="Sharpen alpha=1"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/convolutional/emboss_alpha_1.gif" height="148" width="100" alt="Emboss alpha=1"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/convolutional/edgedetect.gif" height="148" width="100" alt="EdgeDetect"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/convolutional/directededgedetect_alpha_1.gif" height="148" width="100" alt="DirectedEdgeDetect alpha=1"></td>
<td>&nbsp;</td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/convolutional.html#convolve">Convolve</a></td>
</tr>
<tr>
<td colspan="5"><strong>debug</strong></td></tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/debug.html#savedebugimageeverynbatches">SaveDebugImageEveryNBatches</a></td>
</tr>
<tr><td colspan="5"><strong>edges</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/edges.html#canny">Canny</a></sub></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/edges/canny.gif" height="148" width="100" alt="Canny"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr><td colspan="5"><strong>flip</strong></td></tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/flip.html#fliplr">Fliplr</a></sub></td>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/flip.html#flipud">Flipud</a></sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/flip/fliplr.gif" height="148" width="300" alt="Fliplr"></td>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/flip/flipud.gif" height="148" width="300" alt="Flipud"></td>
<td>&nbsp;</td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#horizontalflip">HorizontalFlip</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/color.html#verticalflip">VerticalFlip</a></td>
</tr>
<tr><td colspan="5"><strong>geometric</strong></td></tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#affine">Affine</a></sub></td>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#affine">Affine: Modes</a></sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/affine.gif" height="148" width="300" alt="Affine"></td>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/affine_modes.gif" height="148" width="300" alt="Affine: Modes"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#affine">Affine: cval</a></sub></td>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#piecewiseaffine">PiecewiseAffine</a></sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/affine_cval.gif" height="148" width="300" alt="Affine: cval"></td>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/piecewiseaffine.gif" height="148" width="300" alt="PiecewiseAffine"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#perspectivetransform">PerspectiveTransform</a></sub></td>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#elastictransformation">ElasticTransformation</a><br/>(sigma=1.0)</sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/perspectivetransform.gif" height="148" width="300" alt="PerspectiveTransform"></td>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/elastictransformation_sigma_1_0.gif" height="148" width="300" alt="ElasticTransformation sigma=1.0"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#elastictransformation">ElasticTransformation</a><br/>(sigma=4.0)</sub></td>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#rot90">Rot90</a></sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/elastictransformation_sigma_4_0.gif" height="148" width="300" alt="ElasticTransformation sigma=4.0"></td>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/rot90.gif" height="148" width="300" alt="Rot90"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#withpolarwarping">WithPolarWarping</a><br/>+Affine</sub></td>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#jigsaw">Jigsaw</a><br/>(5x5 grid)</sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/withpolarwarping_affine.gif" height="148" width="300" alt="WithPolarWarping +Affine"></td>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/geometric/jigsaw_5x5_grid.gif" height="148" width="300" alt="Jigsaw 5x5 grid"></td>
<td>&nbsp;</td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#scalex">ScaleX</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#scaley">ScaleY</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#translatex">TranslateX</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#translatey">TranslateY</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/geometric.html#rotate">Rotate</a></td>
</tr>
<tr><td colspan="5"><strong>imgcorruptlike</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#glassblur">GlassBlur</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#defocusblur">DefocusBlur</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#zoomblur">ZoomBlur</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#snow">Snow</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#spatter">Spatter</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/imgcorruptlike/glassblur.gif" height="148" width="100" alt="GlassBlur"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/imgcorruptlike/defocusblur.gif" height="148" width="100" alt="DefocusBlur"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/imgcorruptlike/zoomblur.gif" height="148" width="100" alt="ZoomBlur"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/imgcorruptlike/snow.gif" height="148" width="100" alt="Snow"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/imgcorruptlike/spatter.gif" height="148" width="100" alt="Spatter"></td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#gaussiannoise">GaussianNoise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#shotnoise">ShotNoise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#impulsenoise">ImpulseNoise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#specklenoise">SpeckleNoise</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#gaussianblur">GaussianBlur</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#motionblur">MotionBlur</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#fog">Fog</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#frost">Frost</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#contrast">Contrast</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#brightness">Brightness</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#saturate">Saturate</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#jpegcompression">JpegCompression</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#pixelate">Pixelate</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/imgcorruptlike.html#elastictransform">ElasticTransform</a></td>
</tr>
<tr><td colspan="5"><strong>pillike</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#autocontrast">Autocontrast</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#enhancecolor">EnhanceColor</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#enhancesharpness">EnhanceSharpness</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filteredgeenhancemore">FilterEdgeEnhanceMore</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filtercontour">FilterContour</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pillike/autocontrast.gif" height="148" width="100" alt="Autocontrast"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pillike/enhancecolor.gif" height="148" width="100" alt="EnhanceColor"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pillike/enhancesharpness.gif" height="148" width="100" alt="EnhanceSharpness"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pillike/filteredgeenhancemore.gif" height="148" width="100" alt="FilterEdgeEnhanceMore"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pillike/filtercontour.gif" height="148" width="100" alt="FilterContour"></td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#solarize">Solarize</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#posterize">Posterize</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#equalize">Equalize</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#enhancecontrast">EnhanceContrast</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#enhancebrightness">EnhanceBrightness</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filterblur">FilterBlur</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filtersmooth">FilterSmooth</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filtersmoothmore">FilterSmoothMore</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filteredgeenhance">FilterEdgeEnhance</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filterfindedges">FilterFindEdges</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filteremboss">FilterEmboss</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filtersharpen">FilterSharpen</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#filterdetail">FilterDetail</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/pillike.html#affine">Affine</a></td>
</tr>
<tr><td colspan="5"><strong>pooling</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pooling.html#averagepooling">AveragePooling</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pooling.html#maxpooling">MaxPooling</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pooling.html#minpooling">MinPooling</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/pooling.html#medianpooling">MedianPooling</a></sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pooling/averagepooling.gif" height="148" width="100" alt="AveragePooling"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pooling/maxpooling.gif" height="148" width="100" alt="MaxPooling"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pooling/minpooling.gif" height="148" width="100" alt="MinPooling"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/pooling/medianpooling.gif" height="148" width="100" alt="MedianPooling"></td>
<td>&nbsp;</td>
</tr>
<tr><td colspan="5"><strong>segmentation</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/segmentation.html#superpixels">Superpixels</a><br/>(p_replace=1)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/segmentation.html#superpixels">Superpixels</a><br/>(n_segments=100)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/segmentation.html#uniformvoronoi">UniformVoronoi</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/segmentation.html#regulargridvoronoi">RegularGridVoronoi: rows/cols</a><br/>(p_drop_points=0)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/segmentation.html#regulargridvoronoi">RegularGridVoronoi: p_drop_points</a><br/>(n_rows=n_cols=30)</sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/segmentation/superpixels_p_replace_1.gif" height="148" width="100" alt="Superpixels p_replace=1"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/segmentation/superpixels_n_segments_100.gif" height="148" width="100" alt="Superpixels n_segments=100"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/segmentation/uniformvoronoi.gif" height="148" width="100" alt="UniformVoronoi"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/segmentation/regulargridvoronoi_rows_cols_p_drop_points_0.gif" height="148" width="100" alt="RegularGridVoronoi: rows/cols p_drop_points=0"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/segmentation/regulargridvoronoi_p_drop_points_n_rows_n_cols_30.gif" height="148" width="100" alt="RegularGridVoronoi: p_drop_points n_rows=n_cols=30"></td>
</tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/segmentation.html#regulargridvoronoi">RegularGridVoronoi: p_replace</a><br/>(n_rows=n_cols=16)</sub></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/segmentation/regulargridvoronoi_p_replace_n_rows_n_cols_16.gif" height="148" width="100" alt="RegularGridVoronoi: p_replace n_rows=n_cols=16"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/segmentation.html#voronoi">Voronoi</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/segmentation.html#relativeregulargridvoronoi">RelativeRegularGridVoronoi</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_segmentation.html#imgaug.augmenters.segmentation.RegularGridPointsSampler">RegularGridPointsSampler</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_segmentation.html#imgaug.augmenters.segmentation.RelativeRegularGridPointsSampler">RelativeRegularGridPointsSampler</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_segmentation.html#imgaug.augmenters.segmentation.DropoutPointsSampler">DropoutPointsSampler</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_segmentation.html#imgaug.augmenters.segmentation.UniformPointsSampler">UniformPointsSampler</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/api_augmenters_segmentation.html#imgaug.augmenters.segmentation.SubsamplingPointsSampler">SubsamplingPointsSampler</a></td>
</tr>
<tr><td colspan="5"><strong>size</strong></td></tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#cropandpad">CropAndPad</a></sub></td>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#crop">Crop</a></sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/size/cropandpad.gif" height="148" width="300" alt="CropAndPad"></td>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/size/crop.gif" height="148" width="300" alt="Crop"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#pad">Pad</a></sub></td>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#padtofixedsize">PadToFixedSize</a><br/>(height'=height+32,<br/>width'=width+32)</sub></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/size/pad.gif" height="148" width="300" alt="Pad"></td>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/size/padtofixedsize_height_height_32_width_width_32.gif" height="148" width="300" alt="PadToFixedSize height'=height+32, width'=width+32"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#croptofixedsize">CropToFixedSize</a><br/>(height'=height-32,<br/>width'=width-32)</sub></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/size/croptofixedsize_height_height_32_width_width_32.gif" height="148" width="300" alt="CropToFixedSize height'=height-32, width'=width-32"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#resize">Resize</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#croptomultiplesof">CropToMultiplesOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#padtomultiplesof">PadToMultiplesOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#croptopowersof">CropToPowersOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#padtopowersof">PadToPowersOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#croptoaspectratio">CropToAspectRatio</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#padtoaspectratio">PadToAspectRatio</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#croptosquare">CropToSquare</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#padtosquare">PadToSquare</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centercroptofixedsize">CenterCropToFixedSize</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centerpadtofixedsize">CenterPadToFixedSize</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centercroptomultiplesof">CenterCropToMultiplesOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centerpadtomultiplesof">CenterPadToMultiplesOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centercroptopowersof">CenterCropToPowersOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centerpadtopowersof">CenterPadToPowersOf</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centercroptoaspectratio">CenterCropToAspectRatio</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centerpadtoaspectratio">CenterPadToAspectRatio</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centercroptosquare">CenterCropToSquare</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#centerpadtosquare">CenterPadToSquare</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/size.html#keepsizebyresize">KeepSizeByResize</a></td>
</tr>
<tr><td colspan="5"><strong>weather</strong></td></tr>
<tr>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/weather.html#fastsnowylandscape">FastSnowyLandscape</a><br/>(lightness_multiplier=2.0)</sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/weather.html#clouds">Clouds</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/weather.html#fog">Fog</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/weather.html#snowflakes">Snowflakes</a></sub></td>
<td colspan="1"><sub><a href="https://imgaug.readthedocs.io/en/latest/source/overview/weather.html#rain">Rain</a></sub></td>
</tr>
<tr>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/weather/fastsnowylandscape_lightness_multiplier_2_0.gif" height="144" width="128" alt="FastSnowyLandscape lightness_multiplier=2.0"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/weather/clouds.gif" height="144" width="128" alt="Clouds"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/weather/fog.gif" height="144" width="128" alt="Fog"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/weather/snowflakes.gif" height="144" width="128" alt="Snowflakes"></td>
<td colspan="1"><img src="https://raw.githubusercontent.com/aleju/imgaug-doc/master/readme_images/augmenter_videos/weather/rain.gif" height="144" width="128" alt="Rain"></td>
</tr>
<tr>

</tr>
<tr>
<td colspan="5">See also: <a href="https://imgaug.readthedocs.io/en/latest/source/overview/weather.html#cloudlayer">CloudLayer</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/weather.html#snowflakeslayer">SnowflakesLayer</a>, <a href="https://imgaug.readthedocs.io/en/latest/source/overview/weather.html#rainlayer">RainLayer</a></td>
</tr>

</table>



<a name="code_examples"/>


## Code Examples

### Example: Simple Training Setting

A standard machine learning situation.
Train on batches of images and augment each batch via crop, horizontal
flip ("Fliplr") and gaussian blur:
```python
import numpy as np
import imgaug.augmenters as iaa

def load_batch(batch_idx):
    # dummy function, implement this
    # Return a numpy array of shape (N, height, width, #channels)
    # or a list of (height, width, #channels) arrays (may have different image
    # sizes).
    # Images should be in RGB for colorspace augmentations.
    # (cv2.imread() returns BGR!)
    # Images should usually be in uint8 with values from 0-255.
    return np.zeros((128, 32, 32, 3), dtype=np.uint8) + (batch_idx % 255)

def train_on_images(images):
    # dummy function, implement this
    pass

# Pipeline:
# (1) Crop images from each side by 1-16px, do not resize the results
#     images back to the input size. Keep them at the cropped size.
# (2) Horizontally flip 50% of the images.
# (3) Blur images using a gaussian kernel with sigma between 0.0 and 3.0.
seq = iaa.Sequential([
    iaa.Crop(px=(1, 16), keep_size=False),
    iaa.Fliplr(0.5),
    iaa.GaussianBlur(sigma=(0, 3.0))
])

for batch_idx in range(100):
    images = load_batch(batch_idx)
    images_aug = seq(images=images)  # done by the library
    train_on_images(images_aug)
```


### Example: Very Complex Augmentation Pipeline

Apply a very heavy augmentation pipeline to images (used to create the image 
at the very top of this readme):
```python
import numpy as np
import imgaug as ia
import imgaug.augmenters as iaa

# random example images
images = np.random.randint(0, 255, (16, 128, 128, 3), dtype=np.uint8)

# Sometimes(0.5, ...) applies the given augmenter in 50% of all cases,
# e.g. Sometimes(0.5, GaussianBlur(0.3)) would blur roughly every second image.
sometimes = lambda aug: iaa.Sometimes(0.5, aug)

# Define our sequence of augmentation steps that will be applied to every image
# All augmenters with per_channel=0.5 will sample one value _per image_
# in 50% of all cases. In all other cases they will sample new values
# _per channel_.

seq = iaa.Sequential(
    [
        # apply the following augmenters to most images
        iaa.Fliplr(0.5), # horizontally flip 50% of all images
        iaa.Flipud(0.2), # vertically flip 20% of all images
        # crop images by -5% to 10% of their height/width
        sometimes(iaa.CropAndPad(
            percent=(-0.05, 0.1),
            pad_mode=ia.ALL,
            pad_cval=(0, 255)
        )),
        sometimes(iaa.Affine(
            scale={"x": (0.8, 1.2), "y": (0.8, 1.2)}, # scale images to 80-120% of their size, individually per axis
            translate_percent={"x": (-0.2, 0.2), "y": (-0.2, 0.2)}, # translate by -20 to +20 percent (per axis)
            rotate=(-45, 45), # rotate by -45 to +45 degrees
            shear=(-16, 16), # shear by -16 to +16 degrees
            order=[0, 1], # use nearest neighbour or bilinear interpolation (fast)
            cval=(0, 255), # if mode is constant, use a cval between 0 and 255
            mode=ia.ALL # use any of scikit-image's warping modes (see 2nd image from the top for examples)
        )),
        # execute 0 to 5 of the following (less important) augmenters per image
        # don't execute all of them, as that would often be way too strong
        iaa.SomeOf((0, 5),
            [
                sometimes(iaa.Superpixels(p_replace=(0, 1.0), n_segments=(20, 200))), # convert images into their superpixel representation
                iaa.OneOf([
                    iaa.GaussianBlur((0, 3.0)), # blur images with a sigma between 0 and 3.0
                    iaa.AverageBlur(k=(2, 7)), # blur image using local means with kernel sizes between 2 and 7
                    iaa.MedianBlur(k=(3, 11)), # blur image using local medians with kernel sizes between 2 and 7
                ]),
                iaa.Sharpen(alpha=(0, 1.0), lightness=(0.75, 1.5)), # sharpen images
                iaa.Emboss(alpha=(0, 1.0), strength=(0, 2.0)), # emboss images
                # search either for all edges or for directed edges,
                # blend the result with the original image using a blobby mask
                iaa.SimplexNoiseAlpha(iaa.OneOf([
                    iaa.EdgeDetect(alpha=(0.5, 1.0)),
                    iaa.DirectedEdgeDetect(alpha=(0.5, 1.0), direction=(0.0, 1.0)),
                ])),
                iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05*255), per_channel=0.5), # add gaussian noise to images
                iaa.OneOf([
                    iaa.Dropout((0.01, 0.1), per_channel=0.5), # randomly remove up to 10% of the pixels
                    iaa.CoarseDropout((0.03, 0.15), size_percent=(0.02, 0.05), per_channel=0.2),
                ]),
                iaa.Invert(0.05, per_channel=True), # invert color channels
                iaa.Add((-10, 10), per_channel=0.5), # change brightness of images (by -10 to 10 of original value)
                iaa.AddToHueAndSaturation((-20, 20)), # change hue and saturation
                # either change the brightness of the whole image (sometimes
                # per channel) or change the brightness of subareas
                iaa.OneOf([
                    iaa.Multiply((0.5, 1.5), per_channel=0.5),
                    iaa.FrequencyNoiseAlpha(
                        exponent=(-4, 0),
                        first=iaa.Multiply((0.5, 1.5), per_channel=True),
                        second=iaa.LinearContrast((0.5, 2.0))
                    )
                ]),
                iaa.LinearContrast((0.5, 2.0), per_channel=0.5), # improve or worsen the contrast
                iaa.Grayscale(alpha=(0.0, 1.0)),
                sometimes(iaa.ElasticTransformation(alpha=(0.5, 3.5), sigma=0.25)), # move pixels locally around (with random strengths)
                sometimes(iaa.PiecewiseAffine(scale=(0.01, 0.05))), # sometimes move parts of the image around
                sometimes(iaa.PerspectiveTransform(scale=(0.01, 0.1)))
            ],
            random_order=True
        )
    ],
    random_order=True
)
images_aug = seq(images=images)
```


### Example: Augment Images and Keypoints

Augment images and keypoints/landmarks on the same images:
```python
import numpy as np
import imgaug.augmenters as iaa

images = np.zeros((2, 128, 128, 3), dtype=np.uint8)  # two example images
images[:, 64, 64, :] = 255
points = [
    [(10.5, 20.5)],  # points on first image
    [(50.5, 50.5), (60.5, 60.5), (70.5, 70.5)]  # points on second image
]

seq = iaa.Sequential([
    iaa.AdditiveGaussianNoise(scale=0.05*255),
    iaa.Affine(translate_px={"x": (1, 5)})
])

# augment keypoints and images
images_aug, points_aug = seq(images=images, keypoints=points)

print("Image 1 center", np.argmax(images_aug[0, 64, 64:64+6, 0]))
print("Image 2 center", np.argmax(images_aug[1, 64, 64:64+6, 0]))
print("Points 1", points_aug[0])
print("Points 2", points_aug[1])
```
Note that all coordinates in `imgaug` are subpixel-accurate, which is
why `x=0.5, y=0.5` denotes the center of the top left pixel.


### Example: Augment Images and Bounding Boxes

```python
import numpy as np
import imgaug as ia
import imgaug.augmenters as iaa

images = np.zeros((2, 128, 128, 3), dtype=np.uint8)  # two example images
images[:, 64, 64, :] = 255
bbs = [
    [ia.BoundingBox(x1=10.5, y1=15.5, x2=30.5, y2=50.5)],
    [ia.BoundingBox(x1=10.5, y1=20.5, x2=50.5, y2=50.5),
     ia.BoundingBox(x1=40.5, y1=75.5, x2=70.5, y2=100.5)]
]

seq = iaa.Sequential([
    iaa.AdditiveGaussianNoise(scale=0.05*255),
    iaa.Affine(translate_px={"x": (1, 5)})
])

images_aug, bbs_aug = seq(images=images, bounding_boxes=bbs)
```


### Example: Augment Images and Polygons

```python
import numpy as np
import imgaug as ia
import imgaug.augmenters as iaa

images = np.zeros((2, 128, 128, 3), dtype=np.uint8)  # two example images
images[:, 64, 64, :] = 255
polygons = [
    [ia.Polygon([(10.5, 10.5), (50.5, 10.5), (50.5, 50.5)])],
    [ia.Polygon([(0.0, 64.5), (64.5, 0.0), (128.0, 128.0), (64.5, 128.0)])]
]

seq = iaa.Sequential([
    iaa.AdditiveGaussianNoise(scale=0.05*255),
    iaa.Affine(translate_px={"x": (1, 5)})
])

images_aug, polygons_aug = seq(images=images, polygons=polygons)
```


### Example: Augment Images and LineStrings

LineStrings are similar to polygons, but are not closed, may intersect with
themselves and don't have an inner area.
```python
import numpy as np
import imgaug as ia
import imgaug.augmenters as iaa

images = np.zeros((2, 128, 128, 3), dtype=np.uint8)  # two example images
images[:, 64, 64, :] = 255
ls = [
    [ia.LineString([(10.5, 10.5), (50.5, 10.5), (50.5, 50.5)])],
    [ia.LineString([(0.0, 64.5), (64.5, 0.0), (128.0, 128.0), (64.5, 128.0),
                    (128.0, 0.0)])]
]

seq = iaa.Sequential([
    iaa.AdditiveGaussianNoise(scale=0.05*255),
    iaa.Affine(translate_px={"x": (1, 5)})
])

images_aug, ls_aug = seq(images=images, line_strings=ls)
```


### Example: Augment Images and Heatmaps

Heatmaps are dense float arrays with values between `0.0` and `1.0`.
They can be used e.g. when training models to predict facial landmark
locations. Note that the heatmaps here have lower height and width than the
images. `imgaug` handles that case automatically. The crop pixel amounts will
be halved for the heatmaps.

```python
import numpy as np
import imgaug.augmenters as iaa

# Standard scenario: You have N RGB-images and additionally 21 heatmaps per
# image. You want to augment each image and its heatmaps identically.
images = np.random.randint(0, 255, (16, 128, 128, 3), dtype=np.uint8)
heatmaps = np.random.random(size=(16, 64, 64, 1)).astype(np.float32)

seq = iaa.Sequential([
    iaa.GaussianBlur((0, 3.0)),
    iaa.Affine(translate_px={"x": (-40, 40)}),
    iaa.Crop(px=(0, 10))
])

images_aug, heatmaps_aug = seq(images=images, heatmaps=heatmaps)
```


### Example: Augment Images and Segmentation Maps

This is similar to heatmaps, but the dense arrays have dtype `int32`.
Operations such as resizing will automatically use nearest neighbour
interpolation.

```python
import numpy as np
import imgaug.augmenters as iaa

# Standard scenario: You have N=16 RGB-images and additionally one segmentation
# map per image. You want to augment each image and its heatmaps identically.
images = np.random.randint(0, 255, (16, 128, 128, 3), dtype=np.uint8)
segmaps = np.random.randint(0, 10, size=(16, 64, 64, 1), dtype=np.int32)

seq = iaa.Sequential([
    iaa.GaussianBlur((0, 3.0)),
    iaa.Affine(translate_px={"x": (-40, 40)}),
    iaa.Crop(px=(0, 10))
])

images_aug, segmaps_aug = seq(images=images, segmentation_maps=segmaps)
```


### Example: Visualize Augmented Images

Quickly show example results of your augmentation sequence:
```python
import numpy as np
import imgaug.augmenters as iaa

images = np.random.randint(0, 255, (16, 128, 128, 3), dtype=np.uint8)
seq = iaa.Sequential([iaa.Fliplr(0.5), iaa.GaussianBlur((0, 3.0))])

# Show an image with 8*8 augmented versions of image 0 and 8*8 augmented
# versions of image 1. Identical augmentations will be applied to
# image 0 and 1.
seq.show_grid([images[0], images[1]], cols=8, rows=8)
```


### Example: Visualize Augmented Non-Image Data

`imgaug` contains many helper function, among these functions to quickly
visualize augmented non-image results, such as bounding boxes or heatmaps.

```python
import numpy as np
import imgaug as ia

image = np.zeros((64, 64, 3), dtype=np.uint8)

# points
kps = [ia.Keypoint(x=10.5, y=20.5), ia.Keypoint(x=60.5, y=60.5)]
kpsoi = ia.KeypointsOnImage(kps, shape=image.shape)
image_with_kps = kpsoi.draw_on_image(image, size=7, color=(0, 0, 255))
ia.imshow(image_with_kps)

# bbs
bbsoi = ia.BoundingBoxesOnImage([
    ia.BoundingBox(x1=10.5, y1=20.5, x2=50.5, y2=30.5)
], shape=image.shape)
image_with_bbs = bbsoi.draw_on_image(image)
image_with_bbs = ia.BoundingBox(
    x1=50.5, y1=10.5, x2=100.5, y2=16.5
).draw_on_image(image_with_bbs, color=(255, 0, 0), size=3)
ia.imshow(image_with_bbs)

# polygons
psoi = ia.PolygonsOnImage([
    ia.Polygon([(10.5, 20.5), (50.5, 30.5), (10.5, 50.5)])
], shape=image.shape)
image_with_polys = psoi.draw_on_image(
    image, alpha_points=0, alpha_face=0.5, color_lines=(255, 0, 0))
ia.imshow(image_with_polys)

# heatmaps
hms = ia.HeatmapsOnImage(np.random.random(size=(32, 32, 1)).astype(np.float32),
                         shape=image.shape)
image_with_hms = hms.draw_on_image(image)
ia.imshow(image_with_hms)
```

LineStrings and segmentation maps support similar methods as shown above.


### Example: Using Augmenters Only Once 

While the interface is adapted towards re-using instances of augmenters
many times, you are also free to use them only once. The overhead to
instantiate the augmenters each time is usually negligible.

```python
from imgaug import augmenters as iaa
import numpy as np

images = np.random.randint(0, 255, (16, 128, 128, 3), dtype=np.uint8)

# always horizontally flip each input image
images_aug = iaa.Fliplr(1.0)(images=images)

# vertically flip each input image with 90% probability
images_aug = iaa.Flipud(0.9)(images=images)

# blur 50% of all images using a gaussian kernel with a sigma of 3.0
images_aug = iaa.Sometimes(0.5, iaa.GaussianBlur(3.0))(images=images)
```


### Example: Multicore Augmentation

Images can be augmented in **background processes** using the
method `augment_batches(batches, background=True)`, where `batches` is
a list/generator of
[imgaug.augmentables.batches.UnnormalizedBatch](https://imgaug.readthedocs.io/en/latest/_modules/imgaug/augmentables/batches.html#UnnormalizedBatch)
or
[imgaug.augmentables.batches.Batch](https://imgaug.readthedocs.io/en/latest/source/api_augmentables_batches.html#imgaug.augmentables.batches.Batch).
The following example augments a list of image batches in the background:
```python
import skimage.data
import imgaug as ia
import imgaug.augmenters as iaa
from imgaug.augmentables.batches import UnnormalizedBatch

# Number of batches and batch size for this example
nb_batches = 10
batch_size = 32

# Example augmentation sequence to run in the background
augseq = iaa.Sequential([
    iaa.Fliplr(0.5),
    iaa.CoarseDropout(p=0.1, size_percent=0.1)
])

# For simplicity, we use the same image here many times
astronaut = skimage.data.astronaut()
astronaut = ia.imresize_single_image(astronaut, (64, 64))

# Make batches out of the example image (here: 10 batches, each 32 times
# the example image)
batches = []
for _ in range(nb_batches):
    batches.append(UnnormalizedBatch(images=[astronaut] * batch_size))

# Show the augmented images.
# Note that augment_batches() returns a generator.
for images_aug in augseq.augment_batches(batches, background=True):
    ia.imshow(ia.draw_grid(images_aug.images_aug, cols=8))
```

If you need more control over the background augmentation, e.g. to set
seeds, control the number of used CPU cores or constraint the memory usage,
see the corresponding
[multicore augmentation notebook](https://nbviewer.jupyter.org/github/aleju/imgaug-doc/blob/master/notebooks/A03%20-%20Multicore%20Augmentation.ipynb)
or the API about
[Augmenter.pool()](https://imgaug.readthedocs.io/en/latest/source/api_augmenters_meta.html#imgaug.augmenters.meta.Augmenter.pool)
and
[imgaug.multicore.Pool](https://imgaug.readthedocs.io/en/latest/source/api_multicore.html#imgaug.multicore.Pool).


### Example: Probability Distributions as Parameters

Most augmenters support using tuples `(a, b)` as a shortcut to denote
`uniform(a, b)` or lists `[a, b, c]` to denote a set of allowed values from
which one will be picked randomly. If you require more complex probability
distributions (e.g. gaussians, truncated gaussians or poisson distributions)
you can use stochastic parameters from `imgaug.parameters`:

```python
import numpy as np
from imgaug import augmenters as iaa
from imgaug import parameters as iap

images = np.random.randint(0, 255, (16, 128, 128, 3), dtype=np.uint8)

# Blur by a value sigma which is sampled from a uniform distribution
# of range 10.1 <= x < 13.0.
# The convenience shortcut for this is: GaussianBlur((10.1, 13.0))
blurer = iaa.GaussianBlur(10 + iap.Uniform(0.1, 3.0))
images_aug = blurer(images=images)

# Blur by a value sigma which is sampled from a gaussian distribution
# N(1.0, 0.1), i.e. sample a value that is usually around 1.0.
# Clip the resulting value so that it never gets below 0.1 or above 3.0.
blurer = iaa.GaussianBlur(iap.Clip(iap.Normal(1.0, 0.1), 0.1, 3.0))
images_aug = blurer(images=images)
```

There are many more probability distributions in the library, e.g. truncated
gaussian distribution, poisson distribution or beta distribution.


### Example: WithChannels

Apply an augmenter only to specific image channels:
```python
import numpy as np
import imgaug.augmenters as iaa

# fake RGB images
images = np.random.randint(0, 255, (16, 128, 128, 3), dtype=np.uint8)

# add a random value from the range (-30, 30) to the first two channels of
# input images (e.g. to the R and G channels)
aug = iaa.WithChannels(
  channels=[0, 1],
  children=iaa.Add((-30, 30))
)

images_aug = aug(images=images)
```


<a name="citation"/>

## Citation

<!--
Note: the table only lists people who have their real names (publicly)
set in their github

List of username-realname matching based on
https://github.com/aleju/imgaug/graphs/contributors ordered by commits:

wkentaro            Wada, Kentaro
Erotemic            Crall, Jon
stnk20              Tanaka, Satoshi
jgraving            Graving, Jake
creinders           Reinders, Christoph     (lastname not public on github, guessed from username)
SarthakYadav        Yadav, Sarthak
nektor211           ?
joybanerjee08       Banerjee, Joy
gaborvecsei         Vecsei, Gábor
adamwkraft          Kraft, Adam
ZhengRui            Rui, Zheng
Borda               Borovec, Jirka
vallentin           Vallentin, Christian
ss18                Zhydenko, Semen
kilsenp             Pfeiffer, Kilian
kacper1095          ?
ismaelfm            Fernández, Ismael
fmder               De Rainville, François-Michel
fchouteau           ?
chi-hung            Weng, Chi-Hung
apatsekin           ?
abnera              Ayala-Acevedo, Abner
RephaelMeudec       Meudec, Raphael
Petemir             Laporte, Matias

-->
If this library has helped you during your research, feel free to cite it:
```latex
@misc{imgaug,
  author = {Jung, Alexander B.
            and Wada, Kentaro
            and Crall, Jon
            and Tanaka, Satoshi
            and Graving, Jake
            and Reinders, Christoph
            and Yadav, Sarthak
            and Banerjee, Joy
            and Vecsei, Gábor
            and Kraft, Adam
            and Rui, Zheng
            and Borovec, Jirka
            and Vallentin, Christian
            and Zhydenko, Semen
            and Pfeiffer, Kilian
            and Cook, Ben
            and Fernández, Ismael
            and De Rainville, François-Michel
            and Weng, Chi-Hung
            and Ayala-Acevedo, Abner
            and Meudec, Raphael
            and Laporte, Matias
            and others},
  title = {{imgaug}},
  howpublished = {\url{https://github.com/aleju/imgaug}},
  year = {2020},
  note = {Online; accessed 01-Feb-2020}
}
```


================================================
FILE: bandit.yml
================================================
skips: [
  'B101',
  'B301',  # "Pickle and modules that wrap it can be unsafe when used to
           #  deserialize untrusted data, possible security issue."
  'B403'   # "Consider possible security implications associated with pickle
           #  module."
]

================================================
FILE: changelogs/0.3.0/v0.3.0.cleaned.md
================================================
# 0.3.0 Cleaned Up Log Of Changes

## Improved Segmentation Map Augmentation #302

Augmentation of Segmentation Maps is now faster and more memory efficient.
This required some breaking changes to `SegmentationMapOnImage`.
To adapt to the new version, the following steps should be sufficient for most
users:

* Rename all calls of `SegmentationMapOnImage` to `SegmentationMapsOnImage`
  (Map -> Maps).
* Rename all calls of `SegmentationMapsOnImage.get_arr_int()` to
  `SegmentationMapsOnImage.get_arr()`.
* Remove the argument `nb_classes` from all calls of `SegmentationMapsOnImage`.
* Remove the arguments `background_id` and `background_threshold` from all
  calls as these are no longer supported.
* Ensure that the input array to `SegmentationMapsOnImage` is always an
  int-like (int, uint or bool).
  Float arrays are no longer accepted.
* Adapt all calls `SegmentationMapsOnImage.draw()` and
  `SegmentationMapsOnImage.draw_on_image()`, as both of these now return a
  list of drawn images instead of a single array. (For a segmentation map
  array of shape `(H,W,C)` they return `C` drawn images. In most cases `C=1`,
  so simply call `draw()[0]` or `draw_on_image()[0]`.)
* Ensure that if `SegmentationMapsOnImage.arr` is accessed anywhere, the
  respective code can handle the new `int32` `(H,W,#maps)` array form.
  Previously it was `float32` and the channel-axis had the same size as the
  max class id (+1) that could appear in the map.

Changes:

- Changes to class `SegmentationMapOnImage`:
    - Renamed `SegmentationMapOnImage` to plural `SegmentationMapsOnImage`
      and deprecated the old name.
      This was changed due to the input array now being allowed to contain
      several channels, with each such channel containing one full segmentation
      map.
    - Changed `SegmentationMapsOnImage.__init__` to produce a deprecation
      warning for float arrays as `arr` argument.
    - **[breaking]** Changed `SegmentationMapsOnImage.__init__` to no longer
      accept `uint32` and larger itemsizes as `arr` argument, only `uint16`
      and below is accepted. For `int` the allowed maximum is `int32`.
    - Changed `SegmentationMapsOnImage.__init__` to always accept `(H,W,C)`
      `arr` arguments.
    - **[breaking]** Changed  `SegmentationMapsOnImage.arr` to always be
      `int32` `(H,W,#maps)` (previously: `float32` `(H,W,#nb_classes)`).
    - Deprecated `nb_classes` argument in `SegmentationMapsOnImage.__init__`.
      The argument is now ignored.
    - Added `SegmentationMapsOnImage.get_arr()`, which always returns a
      segmentation map array with similar dtype and number of dimensions as
      was originally input when creating a class instance.
    - Deprecated `SegmentationMapsOnImage.get_arr_int()`.
      The method is now an alias for `get_arr()`.
    - `SegmentationMapsOnImage.draw()`:
        - **[breaking]** Removed argument `return_foreground_mask` and
          corresponding optional output. To generate a foreground mask
          for the `c`-th segmentation map on a given image (usually `c=0`),
          use `segmentation_map.arr[:, :, c] != 0`, assuming that `0` is
          the integer index of your background class. 
        - **[breaking]** Changed output of drawn image to be a list of arrays
          instead of a single array (one per `C` in input array `(H,W,C)`).
        - Refactored to be a wrapper around
          `SegmentationMapsOnImage.draw_on_image()`.
        - The `size` argument may now be any of: A single `None` (keep shape),
          a single integer (use as height and width), a single float (relative
          change to shape) or a tuple of these values. ("shape" here denotes
          the value of the `.shape` attribute.)
    - `SegmentationMapsOnImage.draw_on_image()`:
        - **[breaking]** The argument `background_threshold` is now deprecated
          and ignored. Providing it will lead to a deprecation warning.
        - **[breaking]** Changed output of drawn image to be a list of arrays
          instead of a single array (one per `C` in input array `(H,W,C)`).
    - Changed `SegmentationMapsOnImage.resize()` to use nearest neighbour
      interpolation by default.
    - **[rarely breaking]** Changed `SegmentationMapsOnImage.copy()` to create
      a shallow copy instead of being an alias for `deepcopy()`.
    - Added optional arguments `arr` and `shape` to
      `SegmentationMapsOnImage.copy()`.
    - Added optional arguments `arr` and `shape` to
      `SegmentationMapsOnImage.deepcopy()`.
    - Refactored `SegmentationMapsOnImage.pad()`,
      `SegmentationMapsOnImage.pad_to_aspect_ratio()` and
      `SegmentationMapsOnImage.resize()` to generate new object instances via
      `SegmentationMapsOnImage.deepcopy()`.
    - **[rarely breaking]** Renamed `SegmentationMapsOnImage.input_was` to
      `SegmentationMapsOnImage._input_was`.
    - **[rarely breaking]** Changed `SegmentationMapsOnImage._input_was` to
      always save `(input array dtype, input array ndim)` instead of mixtures
      of strings/ints that varied by dtype kind.
    - **[rarely breaking]** Restrict `shape` argument in
      `SegmentationMapsOnImage.__init__` to tuples instead of accepting all
      iterables.
    - **[breaking]** Removed `SegmentationMapsOnImage.to_heatmaps()` as the
      new segmentation map class is too different to sustain the old heatmap
      conversion methods.
    - **[breaking]** Removed `SegmentationMapsOnImage.from_heatmaps()` as the
      new segmentation map class is too different to sustain the old heatmap
      conversion methods.
- Changes to class `Augmenter`:
    - **[breaking]** Automatic segmentation map normalization from arrays or
      lists of arrays now expects a single `(N,H,W,C)` array (before:
      `(N,H,W)`) or a list of `(H,W,C)` arrays (before: `(H,W)`).
      This affects valid segmentation map inputs for `Augmenter.augment()`
      and its alias `Augmenter.__call__()`,
      `imgaug.augmentables.batches.UnnormalizedBatch()` and
      `imgaug.augmentables.normalization.normalize_segmentation_maps()`.
    - Added `Augmenter._augment_segmentation_maps()`.
    - Changed `Augmenter.augment_segmentation_maps()` to no longer be a
    wrapper around `Augmenter.augment_heatmaps()` and instead call
    `Augmenter._augment_segmentation_maps()`.
- Added special segmentation map handling to all augmenters that modified
  segmentation maps
  (`Sequential`, `SomeOf`, `Sometimes`, `WithChannels`,
   `Lambda`, `AssertLambda`, `AssertShape`,
   `Alpha`, `AlphaElementwise`, `WithColorspace`, `Fliplr`, `Flipud`, `Affine`,
   `AffineCv2`, `PiecewiseAffine`, `PerspectiveTransform`, `ElasticTransformation`,
   `Rot90`, `Resize`, `CropAndPad`, `PadToFixedSize`, `CropToFixedSize`,
   `KeepSizeByResize`).
   - **[rarely breaking]** This changes the order of arguments in
     `Lambda.__init__()`, `AssertLambda.__init__()`, `AssertShape.__init__()`
     and hence breaks if one relied on that order.

## New RNG handling #375

* Adapted library to automatically use the new `numpy.random` classes of
  numpy 1.17 -- if they are available. If they are not available (i.e. numpy
  version is <=1.16), the library automatically falls back to the old
  interface (i.e. `numpy.random.RandomState`).
* Added module `imgaug.random`.
  * Added class `imgaug.random.RNG`. This is now the preferred way to represent
    RNG states (previously: `numpy.random.RandomState`). Instantiate it
    via e.g. `RNG(1052912236)`, where `1052912236` is a seed.
  * Added `imgaug.random.supports_new_rng_style()`.
  * Added `imgaug.random.get_global_rng()`.
  * Added `imgaug.random.seed()`.
  * Added `imgaug.random.normalize_generator()`.
  * Added `imgaug.random.normalize_generator_()`.
  * Added `imgaug.random.convert_seed_to_generator()`.
  * Added `imgaug.random.convert_seed_sequence_to_generator()`.
  * Added `imgaug.random.create_pseudo_random_generator_()`.
  * Added `imgaug.random.create_fully_random_generator()`.
  * Added `imgaug.random.generate_seed_()`.
  * Added `imgaug.random.generate_seeds_()`.
  * Added `imgaug.random.copy_generator()`.
  * Added `imgaug.random.copy_generator_unless_global_generator()`.
  * Added `imgaug.random.reset_generator_cache_()`.
  * Added `imgaug.random.derive_generator_()`.
  * Added `imgaug.random.derive_generators_()`.
  * Added `imgaug.random.get_generator_state()`.
  * Added `imgaug.random.set_generator_state_()`.
  * Added `imgaug.random.is_generator_equal_to()`.
  * Added `imgaug.random.advance_generator_()`.
  * Added `imgaug.random.polyfill_integers()`.
  * Added `imgaug.random.polyfill_random()`.
* Refactored all arguments related to random state handling to also accept
  `imgaug.random.RNG`, as well as the new numpy random classes. This
  particularly affects `imgaug.augmenters.meta.Augmenter` and
  `imgaug.parameters.StochasticParameter` (argument `random_state` for both).
* Marked old RNG related functions in `imgaug.imgaug` as deprecated.
  They will now produce warnings and redirect towards corresponding functions
  in `imgaug.random`. This does not yet affect `imgaug.imgaug.seed()`.
  It does affect the functions listed below.
  * `imgaug.imgaug.normalize_random_state()`.
  * `imgaug.imgaug.current_random_state()`.
  * `imgaug.imgaug.new_random_state()`.
  * `imgaug.imgaug.dummy_random_state()`.
  * `imgaug.imgaug.copy_random_state()`.
  * `imgaug.imgaug.derive_random_state()`.
  * `imgaug.imgaug.derive_random_states()`.
  * `imgaug.imgaug.forward_random_state()`.
* [rarely breaking] Removed `imgaug.imgaug.CURRENT_RANDOM_STATE`.
  Use `imgaug.random.get_global_rng()` instead.
* [rarely breaking] Removed `imgaug.imgaug.SEED_MIN_VALUE`.
  Use `imgaug.random.SEED_MIN_VALUE` instead or sample seeds via
  `imgaug.random.generate_seeds_()`.
* [rarely breaking] Removed `imgaug.imgaug.SEED_MAX_VALUE`.
  Use `imgaug.random.SEED_MAX_VALUE` instead or sample seeds via
  `imgaug.random.generate_seeds_()`.
* Optimized RNG handling throughout all augmenters to minimize the number of
  RNG copies. RNGs are now re-used as often as possible. This improves
  performance, but has the disadvantage that adding images to a batch will now
  often affect the samples of the other images in the same batch. E.g.
  previously for a batch of images `A,B,C` and seed `1`, the samples of `A,B,C`
  would remain unchanged if the batch was changed to `A,B,C,D` (provided the
  seed stayed the same). Now, if `D` is added the samples of `A,B,C` may
  change.
* [breaking] The above listed changes will lead to different values being
  sampled for the same seeds (compared to past versions of the library).
* [breaking] The seed for `imgaug`'s global random number generator is now
  sampled from numpy's default random number generator. That means, that every
  run of a program using `imgaug` will by default use a different seed and
  hence result in different samples. Previously, a fixed seed was used,
  resulting in the same samples for each run (unless the seed was manually
  changed to a fixed one). It also means that seeding numpy will automatically
  also seed imgaug (not guarantueed that this behaviour will be kept in
  future releases). The change from fixed to random seed was done, because the
  old (fixed) behaviour didn't match the common practice (and especially not
  numpy's standard behaviour) and hence led to confusion. #408


## Adaptations to numpy 1.17

* [rarely breaking] Deactivated support for `int64` in
  `imgaug.dtypes.clip_()`. This is due to numpy 1.17 turning `int64` to
  `float64` in `numpy.clip()` (possible that this happened in some way
  before 1.17 too). #302
* [rarely breaking] Changed `imgaug.dtypes.clip()` to never clip `int32`
  in-place, as `numpy.clip()` turns it into `float64` since 1.17 (possible
  that this happend in some way before 1.17 too).
* [rarely breaking] Deactivated support for `int64` in
  `ReplaceElementwise`. See `clip` issue above. #302
* [rarely breaking] Changed `parameters.DiscreteUniform` to always return
  arrays of dtype `int32`. Previously it would automatically return
  `int64`. #302
* [rarely breaking] Changed `parameters.Deterministic` to always return
  `int32` for integers and always `float32` for floats. #302
* [rarely breaking] Changed `parameters.Choice` to limit integer
  dtypes to `int32` or lower, uints to `uint32` or lower and floats
  to `float32` or lower. #302
* [rarely breaking] Changed `parameters.Binomial` and `parameters.Poisson`
  to always return `int32`. #302
* [rarely breaking] Changed `parameters.Normal`,
  `parameters.TruncatedNormal`, `parameters.Laplace`,
  `parameters.ChiSquare`, `parameters.Weibull`, `parameters.Uniform` and
  `parameters.Beta` to always return `float32`. #302
* [rarely breaking] Changed `augmenters.arithmetic.Add`,
  `augmenters.arithmetic.AddElementwise`, `augmenters.arithmetic.Multiply`
  and `augmenters.arithmetic.MultiplyElementwise` to no longer internally
  increase itemsize of dtypes by a factor of 2 for
  dtypes `uint16`, `int8` and `uint16`. For `Multiply*` this also
  covers `float16` and `float32`. This protects against crashes due to
  clipping `int64` or `uint64` data. In rare cases this can lead to
  overflows if `image + random samples` or `image * random samples`
  exceeds the value range of `int32` or `uint32`. This change may affect
  various other augmenters that are wrappers around the mentioned ones,
  e.g. `AdditiveGaussianNoise`. #302
* [rarely breaking] Decreased support of dtypes `uint16`, `int8`,
  `int16`, `float16`, `float32` and `bool` in `augmenters.arithmetic.Add`,
  `AddElementwise`, `Multiply` and `MultiplyElementwise` from "yes" to
  "limited". #302
* [rarely breaking] Decreased support of dtype `int64` in
  `augmenters.arithmetic.ReplaceElementwise` from "yes" to "no". This also
  affects all `*Noise` augmenters (e.g. `AdditiveGaussianNoise`,
  `ImpulseNoise`), all `Dropout` augmenters, all `Salt` augmenters and
  all `Pepper` augmenters. #302
* [rarely breaking] Changed `augmenters.contrast.adjust_contrast_log`
  and thereby `LogContrast` to no longer support dtypes `uint32`, `uint64`,
  `int32` and `int64`. #302


## New Augmenters


* Added `augmenters.edges.Canny`, which applies canny edge detection with alpha
  blending and random coloring to images. #316
* Added `augmenters.pooling.AveragePooling`. #317
* Added `augmenters.pooling.MaxPooling`. #317
* Added `augmenters.pooling.MinPooling`. #317
* Added `augmenters.pooling.MedianPooling`. #317
* Added `augmenters.color.AddToHue`, a shortcut for
  `AddToHueAndSaturation(value_hue=...)`. #319
* Added `augmenters.color.AddToSaturation`, a shortcut for
  `AddToHueAndSaturation(value_saturation=...)`. #319
* Added `augmenters.color.WithHueAndSaturation`. #319
* Added `augmenters.color.MultiplyHueAndSaturation`. #319
* Added `augmenters.color.MultiplyHue`. #319
* Added `augmenters.color.MultiplySaturation`. #319
* Added `augmenters.color.KMeansColorQuantization` and corresponding
  `augmenters.color.quantize_colors_kmeans()`. Both deal with quantizing
  similar colors using k-Means clustering. #347
    * Added a check script for `KMeansColorQuantization` under
      `checks/check_kmeans_color_quantization.py`. #347
* Added `augmenters.color.UniformColorQuantization` and corresponding
  `augmenters.color.quantize_colors_uniform()`. Both deal with quantizing
  similar colors using k-Means clustering. #347
* Added `imgaug.augmenters.segmentation.Voronoi`. An augmenter that converts
  an image to a voronoi image.  #348
* Added `imgaug.augmenters.segmentation.UniformVoronoi`, a shortcut for
  `Voronoi(UniformPointsSamper)`. #348
* Added `imgaug.augmenters.segmentation.RegularGridVoronoi`, a shortcut for
  `Voronoi(DropoutPointsSampler(RegularGridPointsSampler))`. #348
* Added `imgaug.augmenters.segmentation.RelativeRegularGridVoronoi`, a shortcut
  for `Voronoi(DropoutPointsSampler(RelativeRegularGridPointsSampler))`. #348


## New Modules

* Added module `imgaug.augmenters.edges`. #316
* Added module `imgaug.augmenters.pooling`. #317
* Added module `imgaug.validation`. The module is intended for functions
  related to the validation of input arguments. #413


## output_buffer_size

* Added argument `output_buffer_size` to `multicore.Pool.imap_batches()`
  and `multicore.Pool.imap_batches_unordered()` to control the maximum number
  of batches in the background augmentation pipeline (allows to limit
  maximum RAM demands). #305
* Changed default `output_buffer_size` in `Augmenter.augment_batches()` from
  "unlimited" to `10*C`, where `C` is the number of logical CPU cores. #417


## Other New Classes

* Added interface `augmenters.edges.BinaryImageColorizerIf`, which
  contains the interface for classes used to convert binary images to RGB
  images. #316
* Added `augmenters.pooling._AbstractPoolingBase`. #317
* Added `augmenters.edges.RandomColorsBinaryImageColorizer`, which
  converts binary images to RGB images by sampling uniformly RGB colors for
  `True` and `False` values. #316
* Added `augmenters.color._AbstractColorQuantization`. #347
* Added `imgaug.augmenters.segmentation.PointsSamplerIf`. An interface for
  classes used for sampling (usually random) coordinate arrays on images. #348
* Added `imgaug.augmenters.segmentation.RegularGridPointsSampler`. A class
  used to generate regular grids of `rows x columns` points on images. #348
* Added `imgaug.augmenters.segmentation.RelativeRegularGridPointsSampler`.
  Similar to `RegularGridPointsSampler`, but number of rows/columns is set
  as fractions of image sizes, leading to more rows/columns for larger
  images. #348
* Added `imgaug.augmenters.segmentation.DropoutPointsSampler`. A class
  used to randomly drop `p` percent of all coordinates sampled by another
  another points sampler. #348
* Added `imgaug.augmenters.segmentation.UniformPointsSampler`. A class used
  to sample `N` points on each image with y-/x-coordinates uniformly sampled
  using the corresponding image height/width. #348 
* Added `imgaug.augmenters.segmentation.SubsamplingPointsSampler`. A class
  that ensures that another points sampler does not produce more than
  `N` points by subsampling a random subset of the produced points if `N`
  is exceeded. #348
* Added `imgaug.testutils.ArgCopyingMagicMock`. #413


## Other New Functions

* Added `imgaug.is_np_scalar()`, analogous to `imgaug.is_np_array()`. #366
* Added `dtypes.normalize_dtypes()`. #366
* Added `dtypes.normalize_dtype()`. #366
* Added `dtypes.change_dtypes_()`. #366
* Added `dtypes.change_dtype_()`. #366
* Added `dtypes.increase_itemsize_of_dtype()`. #366
* Added `imgaug.warn()` function. #367
* Added `imgaug.min_pool()`. #369
* Added `imgaug.median_pool()`. #369
* Added `imgaug.compute_paddings_to_reach_multiples_of()`. #369
* Added `imgaug.pad_to_multiples_of()`. #369
* Added `imgaug.imgaug.normalize_random_state()`. #348
* Added `imgaug.augmenters.segmentation._ensure_image_max_size()`. #348
* Added `imgaug.augmenters.segmentation._verify_sample_points_images()`. #348
* Added `imgaug.augmenters.segmentation.segment_voronoi()`, a function that
  converts an image into a voronoi image, i.e. averages the colors within
  voronoi cells placed on the image. #348
* Added `_match_pixels_with_voronoi_cells()`. #348
* Added `_generate_pixel_coords()`. #348
* Added `_compute_avg_segment_colors()`. #348
* Added `_render_segments()`. #348
* Added `augmentables.utils.copy_augmentables`. #410
* Added `augmenters.flip.fliplr()`. #385
* Added `augmenters.flip.flipud()`. #385
* Added `augmenters.color.change_colorspace_()`. #409
* Added `augmenters.color.change_colorspace_batch_()`. #409
* Added `augmenters.arithmetic.add_scalar()`. #411
* Added `augmenters.arithmetic.add_elementwise()`. #411
* Added `augmenters.arithmetic.replace_elementwise_()`. #411
* Added `augmenters.arithmetic.compress_jpg()`. #411
* Added `validation.convert_iterable_to_string_of_types()`. #413
* Added `validation.is_iterable_of()`. #413
* Added `validation.assert_is_iterable_of()`. #413


## Other New Constants

* Added to `imgaug.augmenters.color` the constants `CSPACE_RGB`, 
  `CSPACE_BGR`, `CSPACE_GRAY`, `CSPACE_CIE`, `CSPACE_YCrCb`, `CSPACE_HSV`,
  `CSPACE_HLS`, `CSPACE_Lab`, `CSPACE_Luv`, `CSPACE_YUV`, `CSPACE_ALL`. #409


## Other New Arguments

* [rarely breaking] Added a `pad_mode` argument to `imgaug.pool()`,
  `imgaug.avg_pool()`, `imgaug.max_pool()`, `imgaug.min_pool()` and
  `imgaug.median_pool()`. This breaks code relying on the order of the
  functions arguments. #369
* Added to argument `size` of `Resize` the optional keys `short-side` and
  `longer-side`. This adds the ability to resize the shorter and longer sides
  of images (instead of only height/width). #349
* [rarely breaking] Added `value_hue` and `value_saturation` arguments,
  which allow to set individual parameters for hue and saturation
  instead of having to use one parameter for both (they may not be set
  if `value` is already set).
  This changes the order of arguments of the augmenter and code that relied
  on that order will now break.
  This also changes the output of
  `AddToHueAndSaturation.get_parameters()`. #319
* [rarely breaking] Added argument `polygon_recoverer` to
  `augmenters.geometric.PerspectiveTransform`. This changes the order of
  arguments of the augmenter and code that relied on that order will now
  break. #338
* Added attribute `from_colorspace` to `AddToHueAndSaturation`. #409


## Other Removed Concepts

* [rarely breaking] Removed `dtypes.get_minimal_dtype_for_values()`. The
  function was not used anywhere in the library. #366
* [rarely breaking] Removed `dtypes.get_minimal_dtype_by_value_range()`. The
  function was not used anywhere in the library. #366
* [rarely breaking] Removed `Affine.VALID_DTYPES_CV2_ORDER_0`. #407
* [rarely breaking] Removed `Affine.VALID_DTYPES_CV2_ORDER_NOT_0`. #407
* [rarely breaking] Removed `Affine.order_map_skimage_cv2`. #407
* [rarely breaking] Removed `Affine.mode_map_skimage_cv2`. #407
* [rarely breaking] Removed attributes `colorspace_changer` and
  `colorspace_changer_inv` from `AddToHueAndSaturation`. #409
* [rarely breaking] Removed class constant `ALLOW_DTYPES_CUSTOM_MINMAX`
  from `Invert`. #411
* [rarely breaking] Removed attribute `dtype_kind_to_invert_func` from
  `Invert`. #411
* [rarely breaking] Removed attribute `maximum_quality` from
  `JpegCompression`. #411
* [rarely breaking] Removed attribute `minimum_quality` from
  `JpegCompression`. #411
* [rarely breaking] Removed argument `affects` from
  `dtypes.promote_array_dtypes_()` as it was unnecessary and not used anywhere
  in the library. #366
* [rarely breaking] Removed method
  `ElasticTransformation.generate_shift_maps()`. Use
  `ElasticTransformation._generate_shift_maps()` instead. #413
* [rarely breaking] Removed method `ElasticTransformation.map_coordinates()`.
  Use `ElasticTransformation._map_coordinates()` instead. #413


## Performance

* Replaced all calls of `imgaug.do_assert` with ordinary `assert`
  statements. This is a bit less secure, but should overall improve
  performance. #387
* Improved performance of `augmenters.flip.Fliplr`. #385
* Improved performance of `augmenters.flip.Flipud`. #385


## Deprecation

* Marked the following functions as deprecated (#398):
  * `imgaug.augmenters.meta.clip_augmented_image_`
  * `imgaug.augmenters.meta.clip_augmented_image`
  * `imgaug.augmenters.meta.clip_augmented_images_`
  * `imgaug.augmenters.meta.clip_augmented_images`
* Marked `imgaug.augmenters.arithmetic.ContrastNormalization` as deprecated.
  Use `imgaug.augmenters.contrast.LinearContrast` instead. #396
* Marked argument `X` of `imgaug.augmentables.kps.compute_geometric_median()`
  as deprecated. Use argument `points` instead. #402
* Marked `cval` in `imgaug.pool()`, `imgaug.avg_pool()` and `imgaug.max_pool()`
  as deprecated. Use `pad_cval` instead. #369


## Refactorings

* Refactored `augmenters.arithmetic` to improve code quality and
  docstrings. #328
* Refactored `augmenters.segmentation` to improve code quality and
  docstrings. #334
* Refactored `augmenters/convolutional.py` to improve code quality and
  docstrings. #335
* Refactored `augmenters/weather.py` to improve code quality and
  docstrings. #336
* Refactored `multicore` to improve code quality and
  docstrings. #367
  * Improved error messages in `multicore`.
* Refactored `imgaug.pool()` to use `imgaug.pad()` for image padding. #369
* Refactored `augmenters.pooling.MedianPooling` to use
  `imgaug.median_pool()`. #369
* Refactored `augmenters.pooling.MinPooling` to use `imgaug.min_pool()`. #369
* Improved code style and documentation of (#389, #402):
    * `imgaug.augmentables.bbs`.
    * `imgaug.augmentables.heatmaps`.
    * `imgaug.augmentables.kps`.
    * `imgaug.augmentables.lines`.
    * `imgaug.augmentables.normalization`.
    * `imgaug.augmentables.polys`.
    * `imgaug.augmentables.segmaps`.
    * `imgaug.augmentables.utils`.
    * `imgaug.imgaug`.
    * `imgaug.parameters`.
    * `imgaug.augmenters.weather`.
    * `imgaug.augmenters.size`.
    * `imgaug.augmenters.segmentation`.
    * `imgaug.augmenters.meta`.
    * `imgaug.augmenters.geometric`.
    * `imgaug.augmenters.flip`.
    * `imgaug.augmenters.contrast`.
    * `imgaug.augmenters.blur`.
    * `imgaug.augmenters.blend`.
    * `imgaug.augmenters.weather`.
* Refactored all calls of `warnings.warn()` to use `imgaug.imgaug.warn()
  instead. #401
* [rarely breaking] Refactored most of the augmenters from functions to
  classes. Previously, some augmenters were functions that returned an
  instance of another augmenter (with adjusted hyperparameters) when being
  called. Aside from a few corner cases, these have been switched to classes
  inheriting from the augmenters that were previously returned. This should
  make some outputs less confusing (e.g. `print(A())` does no longer lead to
  class `B` being printed). All arguments stayed the same and this is not
  expected to affect any user code negatively. The augmenters listed below are
  affected by this change. #396
    * `imgaug.augmenters.arithmetic.AdditiveGaussianNoise`
    * `imgaug.augmenters.arithmetic.AdditiveLaplaceNoise`
    * `imgaug.augmenters.arithmetic.AdditivePoissonNoise`
    * `imgaug.augmenters.arithmetic.Dropout`
    * `imgaug.augmenters.arithmetic.CoarseDropout`
    * `imgaug.augmenters.arithmetic.ImpulseNoise`
    * `imgaug.augmenters.arithmetic.SaltAndPepper`
    * `imgaug.augmenters.arithmetic.CoarseSaltAndPepper`
    * `imgaug.augmenters.arithmetic.Salt`
    * `imgaug.augmenters.arithmetic.CoarseSalt`
    * `imgaug.augmenters.arithmetic.Pepper`
    * `imgaug.augmenters.arithmetic.CoarsePepper`
    * `imgaug.augmenters.blend.SimplexNoiseAlpha`
    * `imgaug.augmenters.blend.FrequencyNoiseAlpha`
    * `imgaug.augmenters.blur.MotionBlur`
    * `imgaug.augmenters.contrast.MultiplyHueAndSaturation`
    * `imgaug.augmenters.contrast.MultiplyHue`
    * `imgaug.augmenters.contrast.MultiplySaturation`
    * `imgaug.augmenters.contrast.AddToHue`
    * `imgaug.augmenters.contrast.AddToSaturation`
    * `imgaug.augmenters.contrast.Grayscale`
    * `imgaug.augmenters.contrast.GammaContrast`
    * `imgaug.augmenters.contrast.SigmoidContrast`
    * `imgaug.augmenters.contrast.LogContrast`
    * `imgaug.augmenters.contrast.LinearContrast`
    * `imgaug.augmenters.convolutional.Sharpen`
    * `imgaug.augmenters.convolutional.Emboss`
    * `imgaug.augmenters.convolutional.EdgeDetect`
    * `imgaug.augmenters.convolutional.DirectedEdgeDetect`
    * `imgaug.augmenters.meta.OneOf`
    * `imgaug.augmenters.meta.AssertLambda`
    * `imgaug.augmenters.meta.AssertShape`
    * `imgaug.augmenters.size.Pad`
    * `imgaug.augmenters.size.Crop`
    * `imgaug.augmenters.weather.Clouds`
    * `imgaug.augmenters.weather.Fog`
    * `imgaug.augmenters.weather.Snowflakes`
* Refactored `Affine` to improve code quality and minimize code
  duplication. #407
* Refactored `CropAndPad` to improve code quality and minimize code
  duplication. #407
* Refactored module `size` to decrease code duplication between different
  augmenters. #407
* Moved matrix generation logic of augmenters in module `convolutional`
  to classes, one per augmenter (i.e. one per category of convolutional
  matrix). This should avoid errors related to pickling of functions. #407
* Refactored color augmenters to use `change_colorspace_()` and
  `change_colorspace_batch_()`. #409
* Refactored `Alpha` to decrease code duplication. #410
* Refactored `AlphaElementwise` to decrease code duplication. #410
* Refactored `Add` to use `imgaug.augmenters.arithmetic.add_scalar()`. #411
* Refactored `AddElementwise` to use
  `imgaug.augmenters.arithmetic.add_elementwise()`. #411
* Refactored `ReplaceElementwise` to use
  `imgaug.augmenters.arithmetic.replace_elementwise_()`. #411
* Refactored `JpegCompression` to use
  `imgaug.augmenters.arithmetic.compress_jpg()`. #411
* Refactored `AddToHueAndSaturation` to decrease code duplication and improve
  code quality. #319
* Refactored `Affine` to improve code quality and decrease code
  duplication. #413
* Refactored `PiecewiseAffine` to improve code quality and decrease code
  duplication. #413
* Refactored `PerspectiveTransform` to improve code quality and decrease code
  duplication. #413
* Refactored `ElasticTransformation` to improve code quality and decrease code
  duplication. #413
* Refactored `Rot90` to improve code quality and decrease code
  duplication. #413
* Refactored `Augmenter.augment_images()`, `Augmenter.augment_heatmaps()`,
  `Augmenter.augment_segmentation_maps()`, `Augmenter.augment_polygons()`,
  `Augmenter.augment_line_strings()` and `Augmenter._augment_coord_augables()`
  to improve code quality and remove redundancies. #413
* Refactored `imgaug.imgaug.imresize_single_image()`. #413
* Refactored `Sequential` to reduce code duplication. #413
* Refactored `SomeOf` to improve code quality. #413
* Refactored `Sometimes` to reduce code duplication. #413
* Refactored `AssertShape` to reduce code duplication. #413
* Refactored `ChannelShuffle` to improve code quality. #413
* Refactored `dtypes.py` to improve code quality. #366
* Refactored `dtypes.promote_array_dtypes_()` to use
  `dtypes.change_dtypes_()`. #366
* Refactored `dtypes.get_minimal_dtype()` to use
  `dtypes.increase_itemsize_of_dtype()`. #366
* Renamed `dtypes.restore_dtypes_()` to `dtypes.change_dtypes_()`. (Old name
  still exists too and redirects to new name. Not yet marked as
  deprecated.) #366


## Other Changes

* [rarely breaking] Changed colorspace transformations throughout the
  library to fail if the input image does not have three channels. #409
* Changed colorspace transformations throughout the library to also
  support `YUV` colorspace. #409
* [rarely breaking] Changed `AlphaElementwise` to verify for keypoint
  and line string augmentation that the number of coordinates before/after 
  augmentation does not change. Previously this was allowed. This also
  affects `SigmoidNoiseAlpha` and `FrequenceNoiseAlpha`. #410
* [rarely breaking] Changed `AlphaElementwise` to use for keypoint,
  line string and bounding box augmentation a pointwise approach, where
  per coordinate a decision is made whether the new coordinate from the
  first branch's (augmented) results or the second branch's (augmented)
  results are used. The decision is based on the average alpha mask value
  at the xy-location of the coordinate. For polygons, the old mode is
  still used where either all coordinates from the first branch's results
  or the second branch's results are used. This also affects 
  `SigmoidNoiseAlpha` and `FrequenceNoiseAlpha`. #410
* Improved error messages of `dtypes.restore_dtypes_()`. #366 


## Other Minor Changes

* Increased `max_distance` thresholds for `almost_equals()`,
  `exterior_almost_equals()` and `coords_almost_equals()` in `Polygon` and
  `LineString` from `1e-6` to `1e-4`. This should fix false-negative problems
  related to float inaccuracies.
* Changed `_ConcavePolygonRecoverer` to not search for segment intersection
  points in polygons with very large absolute coordinate values.
  This prevents rare errors due to floating point inaccuracies. #338
* Changed `_ConcavePolygonRecoverer` to raise warnings instead of throwing
  exceptions when the underlying search for segment intersection points
  crashes. #338
* Added check to `dtypes.gate_dtypes()` verifying that arguments `allowed`
  and `disallowed` have no intersection. #346
* Changed `dtypes.get_value_range_of_dtype()` to return a float as the center
  value of `uint` dtypes. #366
* Changed `multicore.Pool` to produce a warning if it cannot find or call the
  function `multiprocessing.cpu_count()` instead of silently failing.
  (In both cases it falls back to a default value.) #367
* Changed the default `pad_mode` of `avg_pool` from `constant` (`cval=128`)
  to `reflect`. #369
* Changed the default `pad_mode` of `max_pool` from `constant` (`cval=0`)
  to `edge`. #369
* Changed the default `pad_mode` of `min_pool` from `constant` (`cval=255`)
  to `edge`. #369
* Changed the default `pad_mode` of `median_pool` from `constant`
  (`cval=128`) to `reflect`. #369
* Changed `imgaug.imgaug.pad` to automatically clip the `cval` argument
  to the value range of the array to be padded. #407
* [rarely breaking] Changed `KeypointsOnImage.from_keypoints_image()` to
  return `(x+0.5, y+0.5)` instead of `(x, y)` where `(x, y)` denotes the
  coordinates of the pixel in which a maximum was found. This change matches
  the standard that all pixels are given with subpixel accuracy and therefore
  any whole pixel with a maximum should denote the coordinates of that
  pixel's center. #413
* Removed image-channel check for cv2-based warp in `Affine`. Images with any
  channel number can now be warped using the cv2 backend (previously: only
  `<=4`, others would be warped via skimage). #381
* [rarely breaking] The `value` parameter in
  `augmenters.color.AddToHueAndSaturation` is now interpreted by the
  augmenter to return first the hue and then the saturation value to add,
  instead of the other way round. (This isn't expected to affect
  anybody.) #319
* Added output `from_colorspace` to
  `AddToHueAndSaturation.get_parameters()`. #409
* Added dtype gating to `dtypes.clip_()`.
* Changed all dtype-related functions to accept also dtypes given as
  string names, numpy arrays, numpy scalars or dtype functions. #366
* Changed `dtypes.restore_dtypes_()` so that if `images` is a list of length
  `N` and `dtypes` is a list of length `M` and `N!=M`, the function now raises
  an `AssertionError`. #366
* Changed `dtypes.restore_dtypes_()` to ignore the argument `round` if the
  input array does not have a float dtype. #366
* Removed restrictions of `value` parameter in `AddElementwise`.
  The value range is now no longer limited to `[-255, 255]` and floats
  are now allowed. #411


## New Scripts

* Added a check script for `UniformColorQuantization` in
  `checks/check_uniform_color_quantization.py`. #347
* Added a check script for `Voronoi` in `checks/check_voronoi.py`. #348
* Added a check script for flip performance measurments under
  `checks/check_flip_performance.py`. #385


## Other

* Added the library to `conda-forge` so it can now be installed via
  `conda install imgaug` (provided the conda-forge channel was added
  before that). #320 #339
* Changed dependency `opencv-python` to `opencv-python-headless`.
  This should improve support for some system without GUIs.
* Added dependency `pytest-subtests` for the library's unittests. #366
* Improved the docstrings of most augmenters and added code examples. #302
* Added error messages to `assert` statements throughout the library. #387
* Removed the requirement to implement `_augment_keypoints()` and
  `_augment_heatmaps()` in augmenters. The methods now default to doing
  nothing. Also removed all such noop-implementations of these methods from
  all augmenters. #380
* Increased minimum version requirement for `scikit-image` to
  `0.14.2`. #377, #399
* Renamed `imgaug/external/poly_point_isect.py` to
  `imgaug/external/poly_point_isect_py3.py.bak`.
  The file is in the library only for completeness and contains python3 syntax.
  `poly_point_isect_py2py3.py` is actually used.


## Fixes
 
* Fixed an issue with `Polygon.clip_out_of_image()`,
  which would lead to exceptions if a polygon had overlap with an image,
  but not a single one of its points was inside that image plane. 
* Fixed `multicore` methods falsely not accepting
  `augmentables.batches.UnnormalizedBatch`.
* `Rot90` now uses subpixel-based coordinate remapping.
  I.e. any coordinate `(x, y)` will be mapped to `(H-y, x)` for a rotation by
  90deg.
  Previously, an integer-based remapping to `(H-y-1, x)` was used.
  Coordinates are e.g. used by keypoints, bounding boxes or polygons.
* `augmenters.arithmetic.Invert`
    * [rarely breaking] If `min_value` and/or `max_value` arguments were
      set, `uint64` is no longer a valid input array dtype for `Invert`.
      This is due to a conversion to `float64` resulting in loss of resolution.
    * Fixed `Invert` in rare cases restoring dtypes improperly.
* Fixed `dtypes.gate_dtypes()` crashing if the input was one or more numpy
  scalars instead of numpy arrays or dtypes.
* Fixed `augmenters.geometric.PerspectiveTransform` producing invalid
  polygons (more often with higher `scale` values). #338
* Fixed errors caused by `external/poly_point_isect_py2py3.py` related to
  floating point inaccuracies (changed an epsilon from `1e-10` to `1e-4`,
  rounded some floats). #338
* Fixed `Superpixels` breaking when a sampled `n_segments` was `<=0`.
  `n_segments` is now treated as `1` in these cases.
* Fixed `ReplaceElementwise` both allowing and disallowing dtype `int64`. #346
* Fixed `BoundingBox.deepcopy()` creating only shallow copies of labels. #356
* Fixed `dtypes.change_dtypes_()` #366
    * Fixed argument `round` being ignored if input images were a list.
    * Fixed failure if input images were a list and dtypes a single numpy
      dtype function.
* Fixed `dtypes.get_minimal_dtype()` failing if argument `arrays` contained
  not *exactly* two items. #366
* Fixed calls of `CloudLayer.get_parameters()` resulting in errors. #309
* Fixed `SimplexNoiseAlpha` and `FrequencyNoiseAlpha` not handling
  `sigmoid` argument correctly. #343
* Fixed `SnowflakesLayer` crashing for grayscale images. #345
* Fixed `Affine` heatmap augmentation crashing for arrays with more than
  four channels and `order!=0`. #381
* Fixed an outdated error message in `Affine`. #381
* Fixed `Polygon.clip_out_of_image()` crashing if the intersection between
  polygon and image plane was an edge or point. #382
* Fixed `Polygon.clip_out_of_image()` potentially failing for polygons
  containing two or fewer points. #382
* Fixed `Polygon.is_out_of_image()` returning wrong values if the image plane
  was fully contained inside the polygon with no intersection between the
  image plane and the polygon edge. #382
* Fixed  `Fliplr` and `Flipud` using for coordinate-based inputs and image-like
  inputs slightly different conditions for when to actually apply
  augmentations. #385
* Fixed `Convolve` using an overly restrictive check when validating inputs
  for `matrix` w.r.t. whether they are callables. The check should now also
  support class methods (and possibly various other callables). #407
* Fixed `CropAndPad`, `Pad` and `PadToFixedSize` still clipping `cval` samples
  to the `uint8`. They now clip to the input array's dtype's value range. #407
* Fixed `WithColorspace` not propagating polygons to child augmenters. #409
* Fixed `WithHueAndSaturation` not propagating segmentation maps and polygons
  to child augmenters. #409
* Fixed `AlphaElementwise` to blend coordinates (for keypoints, polygons,
  line strings) on a point-by-point basis following the image's average
  alpha value in the sampled alpha mask of the point's coordinate.
  Previously, the average over the whole mask was used and then either all
  points of the first branch or all of the second branch were used as the
  augmentation output. This also affects `SimplexNoiseAlpha` and
  `FrequencyNoiseAlpha`. #410
* Fixed many augmenters and helper functions producing errors if the height,
  width and/or channels of input arrays were exactly `0` or the channels
  were `>512`. #433
* Fixed `Rot90` not supporting `imgaug.ALL`. #434
* Fixed `PiecewiseAffine` possibly generating samples for non-image data
  when using `absolute_scale=True` that were not well aligned with the
  corresponding images. #437


================================================
FILE: changelogs/0.3.0/v0.3.0.uncleaned.md
================================================
# 0.3.0, Uncleaned Raw Log Of Changes

* Added argument `output_buffer_size` to `multicore.Pool.imap_batches()`
  and `multicore.Pool.imap_batches_unordered()` to control the maximum number
  of batches in the background augmentation pipeline (allows to limit
  maximum RAM demands).
* Increased `max_distance` thresholds for `almost_equals()`,
  `exterior_almost_equals()` and `coords_almost_equals()` in `Polygon` and
  `LineString` from `1e-6` to `1e-4`.
  This should fix false-negative problems related to float inaccuracies.
* Added module `imgaug.augmenters.edges`.
* Added interface `augmenters.edges.BinaryImageColorizerIf`, which
  contains the interface for classes used to convert binary images to RGB
  images.
* Added `augmenters.edges.RandomColorsBinaryImageColorizer`, which
  converts binary images to RGB images by sampling uniformly RGB colors for
  `True` and `False` values.
* Added `augmenters.edges.Canny`, which applies canny edge detection with alpha
  blending and random coloring to images.
* Renamed `imgaug/external/poly_point_isect.py` to
  `imgaug/external/poly_point_isect_py3.py.bak`.
  The file is in the library only for completeness and contains python3 syntax.
  `poly_point_isect_py2py3.py` is actually used.
* Added dtype gating to `dtypes.clip_()`.
* Added module `augmenters.pooling`. #317
    * Added `augmenters.pooling._AbstractPoolingBase`. #317
    * Added `augmenters.pooling.AveragePooling`. #317
    * Added `augmenters.pooling.MaxPooling`. #317
    * Added `augmenters.pooling.MinPooling`. #317
    * Added `augmenters.pooling.MedianPooling`. #317
* `augmenters.color.AddToHueAndSaturation`
    * [rarely breaking] Refactored `AddToHueAndSaturation` to clean it up.
      Re-running old code with the same seeds will now produce different
      images. #319
    * [rarely breaking] The `value` parameter is now interpreted by the
      augmenter to return first the hue and then the saturation value to add,
      instead of the other way round.
      (This shouldn't affect anybody.) #319
    * [rarely breaking] Added `value_hue` and `value_saturation` arguments,
      which allow to set individual parameters for hue and saturation
      instead of having to use one parameter for both (they may not be set
      if `value` is already set).
      This changes the order of arguments of the augmenter and code that relied
      on that order will now break.
      This also changes the output of
      `AddToHueAndSaturation.get_parameters()`. #319
* Added `augmenters.color.AddToHue`, a shortcut for
  `AddToHueAndSaturation(value_hue=...)`. #319
* Added `augmenters.color.AddToSaturation`, a shortcut for
  `AddToHueAndSaturation(value_saturation=...)`. #319
* Added `augmenters.color.WithHueAndSaturation`. #319
* Added `augmenters.color.MultiplyHueAndSaturation`. #319
* Added `augmenters.color.MultiplyHue`. #319
* Added `augmenters.color.MultiplySaturation`. #319
* Refactored `augmenters/weather.py` (general code and docstring cleanup). #336
* [rarely breaking] Refactored `augmenters/convolutional.py`
  (general code and docstring cleanup).
  This involved changing the random state handling.
  Old seeds might now produce different result images for convolutional
  augmenters (`Convolve`, `Sharpen`, `Emboss`, `EdgeDetect`,
  `DirectedEdgeDetect`). #335
* [rarely breaking] Added argument `polygon_recoverer` to
  `augmenters.geometric.PerspectiveTransform`. This changes the order of
  arguments of the augmenter and code that relied on that order will now
  break. #338
* Changed `_ConcavePolygonRecoverer` to not search for segment intersection
  points in polygons with very large absolute coordinate values.
  This prevents rare errors due to floating point inaccuracies. #338
* Changed `_ConcavePolygonRecoverer` to raise warnings instead of throwing
  exceptions when the underlying search for segment intersection points
  crashes. #338
* Added the library to `conda-forge` so it can now be installed via
  `conda install imgaug` (provided the conda-forge channel was added
  before that). #320 #339
* Changed dependency `opencv-python` to `opencv-python-headless`.
  This should improve support for some system without GUIs.
* Refactored code in `augmenters.segmentation` (general code and docstring cleanup). #334
* Refactored code in `augmenters.arithmetic` (general code and docstring cleanup). #328
* Added check to `dtypes.gate_dtypes()` verifying that arguments `allowed`
  and `disallowed` have no intersection. #346
* Added dependency `pytest-subtests` for the library's unittests. #366
* Added `imgaug.is_np_scalar()`, analogous to `imgaug.is_np_array()`. #366
* Reworked and refactored code in `dtypes.py` (general code cleanup). #366
  * Added `dtypes.normalize_dtypes()`.
  * Added `dtypes.normaliz_dtypes()`.
  * Refactored `dtypes.promote_array_dtypes_()` to use
    `dtypes.change_dtypes_()`.
  * Reworked dtype normalization. All functions in the module that required
    dtype inputs accept now dtypes, dtype functions, dtype names, ndarrays
    or numpy scalars.
  * [rarely breaking] `dtypes.restore_dtypes_()`
    * Improved error messages.
    * Changed so that if `images` is a list of length `N` and `dtypes` is a
      list of length `M` and `N!=M`, the function now raises an
      `AssertionError`.
    * The argument `round` is now ignored if the input array does not have
      a float dtype.
  * Renamed `dtypes.restore_dtypes_()` to `dtypes.change_dtypes_()` (old name
    still exists too and redirects to new name).
  * Added `dtypes.change_dtype_()`, analogous to `dtypes.change_dtypes_()`.
  * Added `dtypes.increase_itemsize_of_dtype()`.
      * Refactored `dtypes.get_minimal_dtype()` to use that new function.
  * [rarely breaking] Removed `dtypes.get_minimal_dtype_for_values()`. The
    function was not used anywhere in the library.
  * [rarely breaking] Removed `dtypes.get_minimal_dtype_by_value_range()`. The
    function was not used anywhere in the library.
  * Changed `dtypes.get_value_range_of_dtype()` to return a float as the center
    value of `uint` dtypes.
  * [rarely breaking] Removed argument `affects` from
    `dtypes.promote_array_dtypes_()` as it was unnecessary and not used anywhere
    in the library. #366
* Added `imgaug.warn()` function. #367
* Changed `multicore.Pool` to produce a warning if it cannot find or call the
  function `multiprocessing.cpu_count()` instead of silently failing.
  (In both cases it falls back to a default value.) #367
* Refactored code in `multicore` (general code and docstring cleanup). #367
  * Improved error messages in `multicore`.
* Added `imgaug.min_pool()`. #369
  * Refactored `augmenters.pooling.MinPooling` to use `imgaug.min_pool()`.
* Added `imgaug.median_pool()`. #369
  * Refactored `augmenters.pooling.MedianPooling` to use
    `imgaug.median_pool()`.
* Added `imgaug.compute_paddings_to_reach_multiples_of()`. #369
* Added `imgaug.pad_to_multiples_of()`. #369
* Refactored `imgaug.pool()` to use `imgaug.pad()` for image padding. #369
* [rarely breaking] Added a `pad_mode` argument to `imgaug.pool()`,
  `imgaug.avg_pool()`, `imgaug.max_pool()`, `imgaug.min_pool()` and
  `imgaug.median_pool()`. This breaks code relying on the order of the
  functions arguments. #369
  * Changed the default `pad_mode` of `avg_pool` from `constant` (`cval=128`)
    to `reflect`.
  * Changed the default `pad_mode` of `max_pool` from `constant` (`cval=0`)
    to `edge`.
  * Changed the default `pad_mode` of `min_pool` from `constant` (`cval=255`)
    to `edge`.
  * Changed the default `pad_mode` of `median_pool` from `constant`
    (`cval=128`) to `reflect`.
* Renamed argument `cval` to `pad_cval` in `imgaug.pool()`,
  `imgaug.avg_pool()` and `imgaug.max_pool()`. The old name `cval` is now
  deprecated. #369
* Added `augmenters.color._AbstractColorQuantization`. #347
* Added `augmenters.color.KMeansColorQuantization` and corresponding
  `augmenters.color.quantize_colors_kmeans()`. Both deal with quantizing
  similar colors using k-Means clustering. #347
    * Added a check script for `KMeansColorQuantization` under
      `checks/check_kmeans_color_quantization.py`. #347
* Added `augmenters.color.UniformColorQuantization` and corresponding
  `augmenters.color.quantize_colors_uniform()`. Both deal with quantizing
  similar colors using k-Means clustering. #347
    * Added a check script for `UniformColorQuantization` under
      `checks/check_uniform_color_quantization.py`. #347
* Added `imgaug.imgaug.normalize_random_state()`. #348
* Added `imgaug.augmenters.segmentation._ensure_image_max_size()`. #348
* Added `imgaug.augmenters.segmentation.PointsSamplerIf`. An interface for
  classes used for sampling (usually random) coordinate arrays on images.
* Added `imgaug.augmenters.segmentation._verify_sample_points_images()`. #348
* Added `imgaug.augmenters.segmentation.RegularGridPointsSampler`. A class
  used to generate regular grids of `rows x columns` points on images. #348
* Added `imgaug.augmenters.segmentation.RelativeRegularGridPointsSampler`.
  Similar to `RegularGridPointsSampler`, but number of rows/columns is set
  as fractions of image sizes, leading to more rows/columns for larger
  images. #348
* Added `imgaug.augmenters.segmentation.DropoutPointsSampler`. A class
  used to randomly drop `p` percent of all coordinates sampled by another
  another points sampler. #348
* Added `imgaug.augmenters.segmentation.UniformPointsSampler`. A class used
  to sample `N` points on each image with y-/x-coordinates uniformly sampled
  using the corresponding image height/width. #348 
* Added `imgaug.augmenters.segmentation.SubsamplingPointsSampler`. A class
  that ensures that another points sampler does not produce more than
  `N` points by subsampling a random subset of the produced points if `N`
  is exceeded. #348
* Added `imgaug.augmenters.segmentation.segment_voronoi()`. A function that
  converts an image into a voronoi image, i.e. averages the colors within
  voronoi cells placed on the image. #348
    * Also added in the same module the functions
      `_match_pixels_with_voronoi_cells()`, `_generate_pixel_coords()`,
      `_compute_avg_segment_colors()`, `_render_segments()`.
* Added `imgaug.augmenters.segmentation.Voronoi`. An augmenter that converts
  an image to a voronoi image.  #348
    * Added a check script for `Voronoi` in `checks/check_voronoi.py`.
* Added `imgaug.augmenters.segmentation.UniformVoronoi`, a shortcut for
  `Voronoi(UniformPointsSamper)`. #348
* Added `imgaug.augmenters.segmentation.RegularGridVoronoi`, a shortcut for
  `Voronoi(DropoutPointsSampler(RegularGridPointsSampler))`. #348
* Added `imgaug.augmenters.segmentation.RelativeRegularGridVoronoi`, a shortcut
  for `Voronoi(DropoutPointsSampler(RelativeRegularGridPointsSampler))`. #348
* Add to `Resize` the ability to resize the shorter and longer sides of
  images (instead of only height/width). #349
* Improved the docstrings of most augmenters and added code examples. #302
* Changes to support numpy 1.17 #302
    * [rarely breaking] Deactivated support for `int64` in
      `imgaug.dtypes.clip_()`. This is due to numpy 1.17 turning `int64` to
      `float64` in `numpy.clip()` (possible that this happened in some way
      before 1.17 too).
    * [rarely breaking] Changed `imgaug.dtypes.clip()` to never clip `int32`
      in-place, as `numpy.clip()` turns it into `float64` since 1.17 (possible
      that this happend in some way before 1.17 too).
    * [rarely breaking] Deactivated support for `int64` in
      `ReplaceElementwise`. See `clip` issue above.
    * [rarely breaking] Changed `parameters.DiscreteUniform` to always return
      arrays of dtype `int32`. Previously it would automatically return
      `int64`.
    * [rarely breaking] Changed `parameters.Deterministic` to always return
      `int32` for integers and always `float32` for floats.
    * [rarely breaking] Changed `parameters.Choice` to limit integer
      dtypes to `int32` or lower, uints to `uint32` or lower and floats
      to `float32` or lower. 
    * [rarely breaking] Changed `parameters.Binomial` and `parameters.Poisson`
      to always return `int32`.
    * [rarely breaking] Changed `parameters.Normal`,
      `parameters.TruncatedNormal`, `parameters.Laplace`,
      `parameters.ChiSquare`, `parameters.Weibull`, `parameters.Uniform` and
      `parameters.Beta` to always return `float32`.
    * [rarely breaking] Changed `augmenters.arithmetic.Add`,
      `augmenters.arithmetic.AddElementwise`, `augmenters.arithmetic.Multiply`
      and `augmenters.arithmetic.MultiplyElementwise` to no longer internally
      increase itemsize of dtypes by a factor of 2 for
      dtypes `uint16`, `int8` and `uint16`. For `Multiply*` this also
      covers `float16` and `float32`. This protects against crashes due to
      clipping `int64` or `uint64` data. In rare cases this can lead to
      overflows if `image + random samples` or `image * random samples`
      exceeds the value range of `int32` or `uint32`. This change may affect
      various other augmenters that are wrappers around the mentioned ones,
      e.g. `AdditiveGaussianNoise`.
    * [rarely breaking] Decreased support of dtypes `uint16`, `int8`,
      `int16`, `float16`, `float32` and `bool` in `augmenters.arithmetic.Add`,
      `AddElementwise`, `Multiply` and `MultiplyElementwise` from "yes" to
      "limited".
    * [rarely breaking] Decreased support of dtype `int64` in
      `augmenters.arithmetic.ReplaceElementwise` from "yes" to "no". This also
      affects all `*Noise` augmenters (e.g. `AdditiveGaussianNoise`,
      `ImpulseNoise`), all `Dropout` augmenters, all `Salt` augmenters and
      all `Pepper` augmenters.
    * [rarely breaking] Changed `augmenters.contrast.adjust_contrast_log`
      and thereby `LogContrast` to no longer support dtypes `uint32`, `uint64`,
      `int32` and `int64`.
* Replaced all calls of `imgaug.imgaug.do_assert` by ordinary `assert`
  statements. This is a bit less secure, but should overall improve
  performance. #387
* Added error messages to `assert` statements throughout the library. #387
* Improved code style and documentation of (#389, #402):
    * `imgaug.augmentables.bbs`.
    * `imgaug.augmentables.heatmaps`.
    * `imgaug.augmentables.kps`.
    * `imgaug.augmentables.lines`.
    * `imgaug.augmentables.normalization`.
    * `imgaug.augmentables.polys`.
    * `imgaug.augmentables.segmaps`.
    * `imgaug.augmentables.utils`.
    * `imgaug.imgaug`.
    * `imgaug.parameters`.
    * `imgaug.augmenters.weather`.
    * `imgaug.augmenters.size`.
    * `imgaug.augmenters.segmentation`.
    * `imgaug.augmenters.meta`.
    * `imgaug.augmenters.geometric`.
    * `imgaug.augmenters.flip`.
    * `imgaug.augmenters.contrast`.
    * `imgaug.augmenters.blur`.
    * `imgaug.augmenters.blend`.
    * `imgaug.augmenters.weather`.
* Removed image-channel check for cv2-based warp in `Affine`. Images with any
  channel number can now be warped using the cv2 backend (previously: only
  `<=4`, others would be warped via skimage). #381
* Improved performance of `augmenters.flip.Fliplr`. #385
* Improved performance of `augmenters.flip.Flipud`. #385
* Added function `augmenters.flip.fliplr()`. #385
* Added function `augmenters.flip.flipud()`. #385
* Removed the requirement to implement `_augment_keypoints()` and
  `_augment_heatmaps()` in augmenters. The methods now default to doing
  nothing. Also removed all such noop-implementations of these methods from
  all augmenters. #380
* Increased minimum version requirement for `scikit-image` to
  `0.14.2`. #377, #399
* Marked the following functions as deprecated (#398):
  * `imgaug.augmenters.meta.clip_augmented_image_`
  * `imgaug.augmenters.meta.clip_augmented_image`
  * `imgaug.augmenters.meta.clip_augmented_images_`
  * `imgaug.augmenters.meta.clip_augmented_images`
* Refactored all calls of `warnings.warn()` to use `imgaug.imgaug.warn()
  instead. #401
* [rarely breaking] Refactored most of the augmenters from functions to
  classes. Previously, some augmenters were functions that returned an
  instance of another augmenter (with adjusted hyperparameters) when being
  called. Aside from a few corner cases, these have been switched to classes
  inheriting from the augmenters that were previously returned. This should
  make some outputs less confusing (ass `print(A())` does not lead to class
  `B` being printed). All arguments stayed the same and this is not expected
  to affect any user code negatively. The augmenters listed below are
  affected by this change. #396
    * `imgaug.augmenters.arithmetic.AdditiveGaussianNoise`
    * `imgaug.augmenters.arithmetic.AdditiveLaplaceNoise`
    * `imgaug.augmenters.arithmetic.AdditivePoissonNoise`
    * `imgaug.augmenters.arithmetic.Dropout`
    * `imgaug.augmenters.arithmetic.CoarseDropout`
    * `imgaug.augmenters.arithmetic.ImpulseNoise`
    * `imgaug.augmenters.arithmetic.SaltAndPepper`
    * `imgaug.augmenters.arithmetic.CoarseSaltAndPepper`
    * `imgaug.augmenters.arithmetic.Salt`
    * `imgaug.augmenters.arithmetic.CoarseSalt`
    * `imgaug.augmenters.arithmetic.Pepper`
    * `imgaug.augmenters.arithmetic.CoarsePepper`
    * `imgaug.augmenters.blend.SimplexNoiseAlpha`
    * `imgaug.augmenters.blend.FrequencyNoiseAlpha`
    * `imgaug.augmenters.blur.MotionBlur`
    * `imgaug.augmenters.contrast.MultiplyHueAndSaturation`
    * `imgaug.augmenters.contrast.MultiplyHue`
    * `imgaug.augmenters.contrast.MultiplySaturation`
    * `imgaug.augmenters.contrast.AddToHue`
    * `imgaug.augmenters.contrast.AddToSaturation`
    * `imgaug.augmenters.contrast.Grayscale`
    * `imgaug.augmenters.contrast.GammaContrast`
    * `imgaug.augmenters.contrast.SigmoidContrast`
    * `imgaug.augmenters.contrast.LogContrast`
    * `imgaug.augmenters.contrast.LinearContrast`
    * `imgaug.augmenters.convolutional.Sharpen`
    * `imgaug.augmenters.convolutional.Emboss`
    * `imgaug.augmenters.convolutional.EdgeDetect`
    * `imgaug.augmenters.convolutional.DirectedEdgeDetect`
    * `imgaug.augmenters.meta.OneOf`
    * `imgaug.augmenters.meta.AssertLambda`
    * `imgaug.augmenters.meta.AssertShape`
    * `imgaug.augmenters.size.Pad`
    * `imgaug.augmenters.size.Crop`
    * `imgaug.augmenters.weather.Clouds`
    * `imgaug.augmenters.weather.Fog`
    * `imgaug.augmenters.weather.Snowflakes`
* Marked `imgaug.augmenters.arithmetic.ContrastNormalization` as deprecated.
  Use `imgaug.augmenters.contrast.LinearContrast` instead. #396
* Renamed argument `X` of `imgaug.augmentables.kps.compute_geometric_median()`
  to `points`. The old argument is still accepted, but now deprecated. #402
* Refactored `Affine` to improve code quality and minimize code
  duplication. #407
  * [rarely breaking] Removed `Affine.VALID_DTYPES_CV2_ORDER_0`.
  * [rarely breaking] Removed `Affine.VALID_DTYPES_CV2_ORDER_NOT_0`.
  * [rarely breaking] Removed `Affine.order_map_skimage_cv2`.
  * [rarely breaking] Removed `Affine.mode_map_skimage_cv2`.
* Refactored `CropAndPad` to improve code quality and minimize code
  duplication. #407
* Refactored module `size` to decrease code duplication between different
  augmenters. #407
* Changed `imgaug.imgaug.pad` to automatically clip the `cval` argument
  to the value range of the array to be padded. #407
* Moved matrix generation logic of augmenters in module `convolutional`
  to classes, one per augmenter (i.e. one per category of convolutional
  matrix). This should avoid errors related to pickling of functions. #407
* Refactored `imgaug.augmenters.color` (#409):
    * Added to `imgaug.augmenters.color` the constants `CSPACE_RGB`, 
      `CSPACE_BGR`, `CSPACE_GRAY`, `CSPACE_CIE`, `CSPACE_YCrCb`, `CSPACE_HSV`,
      `CSPACE_HLS`, `CSPACE_Lab`, `CSPACE_Luv`, `CSPACE_YUV`, `CSPACE_ALL`.
    * Added `imgaug.augmenters.color.change_colorspace_()`.
    * Added `imgaug.augmenters.color.change_colorspace_batch_()`.
    * Refactored color augmenters to use `change_colorspace_()` and
      `change_colorspace_batch_()`. 
    * [rarely breaking] Removed attributes `colorspace_changer` and
      `colorspace_changer_inv` from `AddToHueAndSaturation`.
    * Added attribute `from_colorspace` to `AddToHueAndSaturation`. This also
      affects `AddToHue` and `AddToSaturation`.
    * Added output `from_colorspace` to
      `AddToHueAndSaturation.get_parameters()`. This also affects `AddToHue`
      and `AddToSaturation`.
    * [rarely breaking] Changed colorspace transformations throughout the
      library to fail if the input image does not have three channels.
    * Changed colorspace transformations throughout the library to also
      support `YUV` colorspace.
* Added function `imgaug.augmentables.utils.copy_augmentables`. #410
* Refactored `Alpha` to decrease code duplication. #410
* Refactored `AlphaElementwise` to decrease code duplication. #410
    * [rarely breaking] Changed `AlphaElementwise` to verify for keypoint
      and line string augmentation that the number of coordinates before/after 
      augmentation does not change. Previously this was allowed. This also
      affects `SigmoidNoiseAlpha` and `FrequenceNoiseAlpha`.
    * [rarely breaking] Changed `AlphaElementwise` to use for keypoint,
      line string and bounding box augmentation a pointwise approach, where
      per coordinate a decision is made whether the new coordinate from the
      first branch's (augmented) results or the second branch's (augmented)
      results are used. The decision is based on the average alpha mask value
      at the xy-location of the coordinate. For polygons, the old mode is
      still used where either all coordinates from the first branch's results
      or the second branch's results are used. This also affects 
      `SigmoidNoiseAlpha` and `FrequenceNoiseAlpha`.
* Added function `imgaug.augmenters.arithmetic.add_scalar()`. #411
    * Refactored `Add` to use that function.
* Added function `imgaug.augmenters.arithmetic.add_elementwise()`. #411
    * Refactored `AddElementwise` to use that function.
    * Removed restrictions of `value` parameter in `AddElementwise`.
      The value range is now no longer limited to `[-255, 255]` and floats
      are now allowed.
* Added function `imgaug.augmenters.arithmetic.replace_elementwise_()`. #411
    * Refactored `ReplaceElementwise` to use that function.
    * [rarely breaking] Removed class constant `ALLOW_DTYPES_CUSTOM_MINMAX`
      from `Invert`.
    * [rarely breaking] Removed attribute `dtype_kind_to_invert_func` from
      `Invert`.
* Added function `imgaug.augmenters.arithmetic.compress_jpg()`. #411
    * Refactored `JpegCompression` to use that function.
    * [rarely breaking] Removed attribute `maximum_quality` from
      `JpegCompression`.
    * [rarely breaking] Removed attribute `minimum_quality` from
      `JpegCompression`.
* Refactored `Affine` to improve code quality and decrease code
  duplication. #413
* Refactored `PiecewiseAffine` to improve code quality and decrease code
  duplication. #413
* Refactored `PerspectiveTransform` to improve code quality and decrease code
  duplication. #413
* Refactored `ElasticTransformation` to improve code quality and decrease code
  duplication. #413
  * [rarely breaking] Renamed `ElasticTransformation.generate_shift_maps()` to
    `ElasticTransformation._generate_shift_maps()`.
  * [rarely breaking] Renamed `ElasticTransformation.map_coordinates()` to
    `ElasticTransformation._map_coordinates()`.
* Refactored `Rot90` to improve code quality and decrease code
  duplication. #413
* Added `imgaug.testutils.ArgCopyingMagicMock`. #413
* Refactored `Augmenter.augment_images()`, `Augmenter.augment_heatmaps()`,
  `Augmenter.augment_segmentation_maps()`, `Augmenter.augment_polygons()`,
  `Augmenter.augment_line_strings()` and `Augmenter._augment_coord_augables()`
  to improve code quality and remove redundancies. #413
* Refactored `imgaug.imgaug.imresize_single_image()`. #413
* Added module `imgaug.validation`. #413
  * Added `imgaug.validation.convert_iterable_to_string_of_types()`.
  * Added `imgaug.validation.is_iterable_of()`.
  * Added `imgaug.validation.assert_is_iterable_of()`.
* Refactored `Sequential` to reduce code duplication. #413
* Refactored `SomeOf` to improve code quality. #413
* Refactored `Sometimes` to reduce code duplication. #413
* Refactored `AssertShape` to reduce code duplication. #413
* Refactored `ChannelShuffle` to improve code quality. #413
* [rarely breaking] Changed `KeypointsOnImage.from_keypoints_image()` to
  return `(x+0.5, y+0.5)` instead of `(x, y)` where `(x, y)` denotes the
  coordinates of the pixel in which a maximum was found. This change matches
  the standard that all pixels are given with subpixel accuracy and therefore
  any whole pixel with a maximum should denote the coordinates of that
  pixel's center. #413
* Changed default `output_buffer_size` in `Augmenter.augment_batches()` from
  "unlimited" to `10*C`, where `C` is the number of logical CPU cores. #417


## Improved Segmentation Map Augmentation #302

Augmentation of Segmentation Maps is now faster and more memory efficient.
This required some breaking changes to `SegmentationMapOnImage`.
To adapt to the new version, the following steps should be sufficient for most
users:

* Rename all calls of `SegmentationMapOnImage` to `SegmentationMapsOnImage`
  (Map -> Maps).
* Rename all calls of `SegmentationMapsOnImage.get_arr_int()` to
  `SegmentationMapsOnImage.get_arr()`.
* Remove the argument `nb_classes` from all calls of `SegmentationMapsOnImage`.
* Remove the arguments `background_id` and `background_threshold` from all
  calls as these are no longer supported.
* Ensure that the input array to `SegmentationMapsOnImage` is always an
  int-like (int, uint or bool).
  Float arrays are no longer accepted.
* Adapt all calls `SegmentationMapsOnImage.draw()` and
  `SegmentationMapsOnImage.draw_on_image()`, as both of these now return a
  list of drawn images instead of a single array. (For a segmentation map
  array of shape `(H,W,C)` they return `C` drawn images. In most cases `C=1`,
  so simply call `draw()[0]` or `draw_on_image()[0]`.)
* Ensure that if `SegmentationMapsOnImage.arr` is accessed anywhere, the
  respective code can handle the new `int32` `(H,W,#maps)` array form.
  Previously it was `float32` and the channel-axis had the same size as the
  max class id (+1) that could appear in the map.

Changes:

- Changes to class `SegmentationMapOnImage`:
    - Renamed `SegmentationMapOnImage` to plural `SegmentationMapsOnImage`
      and deprecated the old name.
      This was changed due to the input array now being allowed to contain
      several channels, with each such channel containing one full segmentation
      map.
    - Changed `SegmentationMapsOnImage.__init__` to produce a deprecation
      warning for float arrays as `arr` argument.
    - **[breaking]** Changed `SegmentationMapsOnImage.__init__` to no longer
      accept `uint32` and larger itemsizes as `arr` argument, only `uint16`
      and below is accepted. For `int` the allowed maximum is `int32`.
    - Changed `SegmentationMapsOnImage.__init__` to always accept `(H,W,C)`
      `arr` arguments.
    - **[breaking]** Changed  `SegmentationMapsOnImage.arr` to always be
      `int32` `(H,W,#maps)` (previously: `float32` `(H,W,#nb_classes)`).
    - Deprecated `nb_classes` argument in `SegmentationMapsOnImage.__init__`.
      The argument is now ignored.
    - Added `SegmentationMapsOnImage.get_arr()`, which always returns a
      segmentation map array with similar dtype and number of dimensions as
      was originally input when creating a class instance.
    - Deprecated `SegmentationMapsOnImage.get_arr_int()`.
      The method is now an alias for `get_arr()`.
    - `SegmentationMapsOnImage.draw()`:
        - **[breaking]** Removed argument `return_foreground_mask` and
          corresponding optional output. To generate a foreground mask
          for the `c`-th segmentation map on a given image (usually `c=0`),
          use `segmentation_map.arr[:, :, c] != 0`, assuming that `0` is
          the integer index of your background class. 
        - **[breaking]** Changed output of drawn image to be a list of arrays
          instead of a single array (one per `C` in input array `(H,W,C)`).
        - Refactored to be a wrapper around
          `SegmentationMapsOnImage.draw_on_image()`.
        - The `size` argument may now be any of: A single `None` (keep shape),
          a single integer (use as height and width), a single float (relative
          change to shape) or a tuple of these values. ("shape" here denotes
          the value of the `.shape` attribute.)
    - `SegmentationMapsOnImage.draw_on_image()`:
        - **[breaking]** The argument `background_threshold` is now deprecated
          and ignored. Providing it will lead to a deprecation warning.
        - **[breaking]** Changed output of drawn image to be a list of arrays
          instead of a single array (one per `C` in input array `(H,W,C)`).
    - Changed `SegmentationMapsOnImage.resize()` to use nearest neighbour
      interpolation by default.
    - **[rarely breaking]** Changed `SegmentationMapsOnImage.copy()` to create
      a shallow copy instead of being an alias for `deepcopy()`.
    - Added optional arguments `arr` and `shape` to
      `SegmentationMapsOnImage.copy()`.
    - Added optional arguments `arr` and `shape` to
      `SegmentationMapsOnImage.deepcopy()`.
    - Refactored `SegmentationMapsOnImage.pad()`,
      `SegmentationMapsOnImage.pad_to_aspect_ratio()` and
      `SegmentationMapsOnImage.resize()` to generate new object instances via
      `SegmentationMapsOnImage.deepcopy()`.
    - **[rarely breaking]** Renamed `SegmentationMapsOnImage.input_was` to
      `SegmentationMapsOnImage._input_was`.
    - **[rarely breaking]** Changed `SegmentationMapsOnImage._input_was` to
      always save `(input array dtype, input array ndim)` instead of mixtures
      of strings/ints that varied by dtype kind.
    - **[rarely breaking]** Restrict `shape` argument in
      `SegmentationMapsOnImage.__init__` to tuples instead of accepting all
      iterables.
    - **[breaking]** Removed `SegmentationMapsOnImage.to_heatmaps()` as the
      new segmentation map class is too different to sustain the old heatmap
      conversion methods.
    - **[breaking]** Removed `SegmentationMapsOnImage.from_heatmaps()` as the
      new segmentation map class is too different to sustain the old heatmap
      conversion methods.
- Changes to class `Augmenter`:
    - **[breaking]** Automatic segmentation map normalization from arrays or
      lists of arrays now expects a single `(N,H,W,C)` array (before:
      `(N,H,W)`) or a list of `(H,W,C)` arrays (before: `(H,W)`).
      This affects valid segmentation map inputs for `Augmenter.augment()`
      and its alias `Augmenter.__call__()`,
      `imgaug.augmentables.batches.UnnormalizedBatch()` and
      `imgaug.augmentables.normalization.normalize_segmentation_maps()`.
    - Added `Augmenter._augment_segmentation_maps()`.
    - Changed `Augmenter.augment_segmentation_maps()` to no longer be a
    wrapper around `Augmenter.augment_heatmaps()` and instead call
    `Augmenter._augment_segmentation_maps()`.
- Added special segmentation map handling to all augmenters that modified
  segmentation maps
  (`Sequential`, `SomeOf`, `Sometimes`, `WithChannels`,
   `Lambda`, `AssertLambda`, `AssertShape`,
   `Alpha`, `AlphaElementwise`, `WithColorspace`, `Fliplr`, `Flipud`, `Affine`,
   `AffineCv2`, `PiecewiseAffine`, `PerspectiveTransform`, `ElasticTransformation`,
   `Rot90`, `Resize`, `CropAndPad`, `PadToFixedSize`, `CropToFixedSize`,
   `KeepSizeByResize`).
   - **[rarely breaking]** This changes the order of arguments in
     `Lambda.__init__()`, `AssertLambda.__init__()`, `AssertShape.__init__()`
     and hence breaks if one relied on that order.

## New RNG handling #375

* Adapted library to automatically use the new `numpy.random` classes of
  numpy 1.17 -- if they are available. If they are not available (i.e. numpy
  version is <=1.16), the library automatically falls back to the old
  interface (i.e. `numpy.random.RandomState`).
* Added module `imgaug.random`.
  * Added class `imgaug.random.RNG`. This is now the preferred way to represent
    RNG states (previously: `numpy.random.RandomState`). Instantiate it
    via e.g. `RNG(1052912236)`, where `1052912236` is a seed.
  * Added `imgaug.random.supports_new_rng_style()`.
  * Added `imgaug.random.get_global_rng()`.
  * Added `imgaug.random.seed()`.
  * Added `imgaug.random.normalize_generator()`.
  * Added `imgaug.random.normalize_generator_()`.
  * Added `imgaug.random.convert_seed_to_generator()`.
  * Added `imgaug.random.convert_seed_sequence_to_generator()`.
  * Added `imgaug.random.create_pseudo_random_generator_()`.
  * Added `imgaug.random.create_fully_random_generator()`.
  * Added `imgaug.random.generate_seed_()`.
  * Added `imgaug.random.generate_seeds_()`.
  * Added `imgaug.random.copy_generator()`.
  * Added `imgaug.random.copy_generator_unless_global_generator()`.
  * Added `imgaug.random.reset_generator_cache_()`.
  * Added `imgaug.random.derive_generator_()`.
  * Added `imgaug.random.derive_generators_()`.
  * Added `imgaug.random.get_generator_state()`.
  * Added `imgaug.random.set_generator_state_()`.
  * Added `imgaug.random.is_generator_equal_to()`.
  * Added `imgaug.random.advance_generator_()`.
  * Added `imgaug.random.polyfill_integers()`.
  * Added `imgaug.random.polyfill_random()`.
* Refactored all arguments related to random state handling to also accept
  `imgaug.random.RNG`, as well as the new numpy random classes. This
  particularly affects `imgaug.augmenters.meta.Augmenter` and
  `imgaug.parameters.StochasticParameter` (argument `random_state` for both).
* Marked old RNG related functions in `imgaug.imgaug` as deprecated.
  They will now produce warnings and redirect towards corresponding functions
  in `imgaug.random`. This does not yet affect `imgaug.imgaug.seed()`.
  It does affect the functions listed below.
  * `imgaug.imgaug.normalize_random_state()`.
  * `imgaug.
Download .txt
gitextract_v3n8p6ds/

├── .codacy.yml
├── .github/
│   └── workflows/
│       ├── build_wheels.yml
│       ├── test_master.yml
│       └── test_pull_requests.yml
├── .gitignore
├── .pylintrc
├── .travis.yml
├── CHANGELOG.md
├── LICENSE
├── MANIFEST.in
├── README.md
├── bandit.yml
├── changelogs/
│   ├── 0.3.0/
│   │   ├── v0.3.0.cleaned.md
│   │   └── v0.3.0.uncleaned.md
│   ├── 0.4.0/
│   │   ├── 20191003_reworked_aug_methods.md
│   │   ├── 20191016_pooling_affects_maps.md
│   │   ├── 20191026_reworked_quantization.md
│   │   ├── 20191027_improve_invert.md
│   │   ├── 20191111_pickleable.md
│   │   ├── 20191113_iterable_augmentables.md
│   │   ├── 20191610_crop_and_pad.md
│   │   ├── 20191610_perspective_transform.md
│   │   ├── 20200107_improved_blending.md
│   │   ├── 20200126_python38.md
│   │   ├── added/
│   │   │   ├── 20190927_unwrapped_bb_aug.md
│   │   │   ├── 20191002_unwrapped_ls_aug.md
│   │   │   ├── 20191013_change_color_temperature.md
│   │   │   ├── 20191014_brightness_augmenters.md
│   │   │   ├── 20191016_dropout2d.md
│   │   │   ├── 20191019_colorwise_grayscaling.md
│   │   │   ├── 20191020_cartoon.md
│   │   │   ├── 20191023_mean_shift_blur.md
│   │   │   ├── 20191027_jigsaw.md
│   │   │   ├── 20191101_deterministic_list.md
│   │   │   ├── 20191102_autocontrast.md
│   │   │   ├── 20191103_affine_shear_y.md
│   │   │   ├── 20191103_equalize.md
│   │   │   ├── 20191103_identity.md
│   │   │   ├── 20191105_affine_wrappers.md
│   │   │   ├── 20191106_ooi_removal.md
│   │   │   ├── 20191110_bb_polygon_conversion.md
│   │   │   ├── 20191110_polygon_subdivision.md
│   │   │   ├── 20191110_withpolarwarping.md
│   │   │   ├── 20191117_debug_images.md
│   │   │   ├── 20191117_pad_multi_cval.md
│   │   │   ├── 20191218_imagecorruptions.md
│   │   │   ├── 20191220_cutout.md
│   │   │   ├── 20191221_inplace_cba_methods.md
│   │   │   ├── 20191224_pil_module.md
│   │   │   ├── 20191230_standardized_lut.md
│   │   │   ├── 20200101_bb_label_drawing.md
│   │   │   ├── 20200102_cbasoi_getitem.md
│   │   │   ├── 20200105_discretize_round.md
│   │   │   ├── 20200106_rain.md
│   │   │   ├── 20200106_randaugment.md
│   │   │   └── 20200125_image_warnings.md
│   │   ├── changed/
│   │   │   ├── 20190929_rngs_polygon_recoverer.md
│   │   │   ├── 20191110_affine_translation_precision.md
│   │   │   ├── 20191128_affine_translate.md
│   │   │   ├── 20191230_dont_import_msgs.md
│   │   │   ├── 20200103_standardized_shift_interfaces.md
│   │   │   ├── 20200112_simplified_augmenter_args.md
│   │   │   ├── 20200115_changed_defaults.md
│   │   │   └── 20200125_any_opencv_accepted.md
│   │   ├── deprecated/
│   │   │   ├── 20190926_rename_inplace.md
│   │   │   └── 20191230_deprecate_affinecv2.md
│   │   ├── fixed/
│   │   │   ├── 20190926_fixed_resize_dtype.md
│   │   │   ├── 20190928_fixed_affine_coords_aug.md
│   │   │   ├── 20190928_fixed_pwa_empty_kps_unaligned.md
│   │   │   ├── 20190928_fixed_type_val.md
│   │   │   ├── 20190929_fixed_assert_is_iterable_of.md
│   │   │   ├── 20191003_fixed_image_normalization.md
│   │   │   ├── 20191003_fixed_typo.md
│   │   │   ├── 20191006_fixed_withchannels_alignment.md
│   │   │   ├── 20191106_fixed_random_state_funcs_missing.md
│   │   │   ├── 20191110_fixed_affine_map_aug.md
│   │   │   ├── 20191111_fixed_snowflakeslayer_crash.md
│   │   │   ├── 20191111_multiplyhueandsaturation_rng.md
│   │   │   ├── 20191124_fixed_cloud_layer_float.md
│   │   │   ├── 20191128_fixed_affine_translate.md
│   │   │   ├── 20191128_fixed_hanging_nixos.md
│   │   │   ├── 20191217_collections_abc.md
│   │   │   ├── 20191218_fixed_fromfunction_deprecated.md
│   │   │   ├── 20191222_fixed_numpy_1_18.md
│   │   │   ├── 20191223_fixed_opencv_multicore_aug_hanging.md
│   │   │   ├── 20200110_fixed_seed.md
│   │   │   ├── 20200111_fixed_elastic_transformation_cval.md
│   │   │   ├── 20200113_fixed_weather_randomness.md
│   │   │   ├── 20200118_perspt_inaccuracy.md
│   │   │   ├── 20200122_fix_keepsizebyresize.md
│   │   │   └── 20200126_shapely_17a2.md
│   │   ├── refactored/
│   │   │   ├── 20191124_pylint.md
│   │   │   └── 20200111_opencv_normalization.md
│   │   └── renamed/
│   │       └── 20190926_rename_inplace.md
│   ├── master/
│   │   ├── 20200206_data_module.md
│   │   ├── changed/
│   │   │   ├── 20200222_shape_handling.md
│   │   │   └── 20200522_limit_dtype_support_alphablend.md
│   │   ├── fixed/
│   │   │   ├── 20200217_legacy_kp_aug_fallback.md
│   │   │   ├── 20200225_fix_imageio.md
│   │   │   ├── 20200412_fix_change_color_temperature.md
│   │   │   ├── 20200521_fix_skimage_slic_warning.md
│   │   │   ├── 20200522_fix_blend_alpha_f128.md
│   │   │   ├── 20200522_fix_mac_multiprocessing.md
│   │   │   ├── 20200522_fix_pad_f128.md
│   │   │   ├── 20200522_fix_permission_denied.md
│   │   │   ├── 20200525_fix_affine_cval_float.md
│   │   │   └── 20200601_fix_affine_skimage_order_0.md
│   │   ├── improved/
│   │   │   ├── 20200211_improve_performance_add.md
│   │   │   ├── 20200213_improved_blend_performance.md
│   │   │   ├── 20200216_add_elementwise_performance.md
│   │   │   ├── 20200216_improve_multiply_scalar_perf.md
│   │   │   ├── 20200216_improved_mul_elementwise_perf.md
│   │   │   ├── 20200217_vectorize_cropandpad.md
│   │   │   ├── 20200221_reworked_pooling.md
│   │   │   ├── 20200223_blur_avg.md
│   │   │   ├── 20200223_faster_elastic_tf.md
│   │   │   ├── 20200229_convolve.md
│   │   │   ├── 20200229_faster_invert.md
│   │   │   ├── 20200308_prefetching.md
│   │   │   ├── 20200315_segment_replacement.md
│   │   │   ├── 20200413_frequency_noise.md
│   │   │   ├── 20200517_faster_dtype_checks.md
│   │   │   ├── 20200521_improved_cicd_testing.md
│   │   │   ├── 20200522_tests_f128.md
│   │   │   └── 20200530_glass_blur_perf.md
│   │   └── refactored/
│   │       ├── 20200223_blur_gaussian.md
│   │       └── 20200314_affine.md
│   ├── v0.2.8.summary.md
│   ├── v0.2.9.summary.md
│   ├── v0.3.0.summary.md
│   └── v0.4.0.summary.md
├── checks/
│   ├── README.md
│   ├── check_add_to_hue_and_saturation.py
│   ├── check_affine.py
│   ├── check_affinecv2.py
│   ├── check_average_blur.py
│   ├── check_background_augmentation.py
│   ├── check_bb_augmentation.py
│   ├── check_bilateral_blur.py
│   ├── check_blendalphasegmapclassids.py
│   ├── check_blendalphasomecolors.py
│   ├── check_brightness.py
│   ├── check_canny.py
│   ├── check_cartoon.py
│   ├── check_channel_shuffle.py
│   ├── check_clouds.py
│   ├── check_color_temperature.py
│   ├── check_contrast.py
│   ├── check_crop_and_pad.py
│   ├── check_cutout.py
│   ├── check_deprecation_warning.py
│   ├── check_directed_edge_detect.py
│   ├── check_elastic_transformation.py
│   ├── check_fast_snowy_landscape.py
│   ├── check_fixed_size.py
│   ├── check_flip_performance.py
│   ├── check_fog.py
│   ├── check_heatmaps.py
│   ├── check_impulse_noise.py
│   ├── check_imshow.py
│   ├── check_jigsaw.py
│   ├── check_jpeg_compression.py
│   ├── check_kmeans_color_quantization.py
│   ├── check_laplace_noise.py
│   ├── check_mean_shift_blur.py
│   ├── check_median_blur.py
│   ├── check_motion_blur.py
│   ├── check_multicore_pool.py
│   ├── check_multiply_hue_and_saturation.py
│   ├── check_noise.py
│   ├── check_parameters.py
│   ├── check_performance.py
│   ├── check_perspective_transform.py
│   ├── check_piecewise_affine.py
│   ├── check_poisson_noise.py
│   ├── check_polygons_stay_valid_during_augmentation.py
│   ├── check_pooling.py
│   ├── check_quantize_uniform_to_n_bits.py
│   ├── check_rain.py
│   ├── check_randaugment.py
│   ├── check_readme_examples.py
│   ├── check_remove_saturation.py
│   ├── check_resize.py
│   ├── check_rot90.py
│   ├── check_seed.py
│   ├── check_segmentation_maps.py
│   ├── check_single_image_warning.py
│   ├── check_snowflakes.py
│   ├── check_snowflakes_layer.py
│   ├── check_solarize.py
│   ├── check_some_of.py
│   ├── check_superpixels.py
│   ├── check_uniform_color_quantization.py
│   ├── check_visually.py
│   ├── check_voronoi.py
│   ├── check_with_hue_and_saturation.py
│   ├── check_withchannels.py
│   └── check_withcolorspace.py
├── codecov.yml
├── imgaug/
│   ├── __init__.py
│   ├── augmentables/
│   │   ├── __init__.py
│   │   ├── base.py
│   │   ├── batches.py
│   │   ├── bbs.py
│   │   ├── heatmaps.py
│   │   ├── kps.py
│   │   ├── lines.py
│   │   ├── normalization.py
│   │   ├── polys.py
│   │   ├── segmaps.py
│   │   └── utils.py
│   ├── augmenters/
│   │   ├── __init__.py
│   │   ├── arithmetic.py
│   │   ├── artistic.py
│   │   ├── base.py
│   │   ├── blend.py
│   │   ├── blur.py
│   │   ├── collections.py
│   │   ├── color.py
│   │   ├── contrast.py
│   │   ├── convolutional.py
│   │   ├── debug.py
│   │   ├── edges.py
│   │   ├── flip.py
│   │   ├── geometric.py
│   │   ├── imgcorruptlike.py
│   │   ├── meta.py
│   │   ├── overlay.py
│   │   ├── pillike.py
│   │   ├── pooling.py
│   │   ├── segmentation.py
│   │   ├── size.py
│   │   └── weather.py
│   ├── data.py
│   ├── dtypes.py
│   ├── external/
│   │   ├── README.md
│   │   ├── __init__.py
│   │   ├── opensimplex.py
│   │   └── poly_point_isect_py2py3.py
│   ├── imgaug.py
│   ├── multicore.py
│   ├── parameters.py
│   ├── quokka_annotations.json
│   ├── random.py
│   ├── testutils.py
│   └── validation.py
├── pytest.ini
├── readthedocs.yml
├── requirements.txt
├── setup.cfg
├── setup.py
└── test/
    ├── augmentables/
    │   ├── test_batches.py
    │   ├── test_bbs.py
    │   ├── test_heatmaps.py
    │   ├── test_kps.py
    │   ├── test_lines.py
    │   ├── test_normalization.py
    │   ├── test_polys.py
    │   ├── test_segmaps.py
    │   └── test_utils.py
    ├── augmenters/
    │   ├── test_arithmetic.py
    │   ├── test_artistic.py
    │   ├── test_blend.py
    │   ├── test_blur.py
    │   ├── test_collections.py
    │   ├── test_color.py
    │   ├── test_contrast.py
    │   ├── test_convolutional.py
    │   ├── test_debug.py
    │   ├── test_edges.py
    │   ├── test_flip.py
    │   ├── test_geometric.py
    │   ├── test_imgcorruptlike.py
    │   ├── test_meta.py
    │   ├── test_mixed_files.py
    │   ├── test_overlay.py
    │   ├── test_pillike.py
    │   ├── test_pooling.py
    │   ├── test_segmentation.py
    │   ├── test_size.py
    │   └── test_weather.py
    ├── requirements.txt
    ├── run_doctests.sh
    ├── run_tests.sh
    ├── test_data.py
    ├── test_dtypes.py
    ├── test_imgaug.py
    ├── test_multicore.py
    ├── test_parameters.py
    └── test_random.py
Download .txt
Showing preview only (813K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8828 symbols across 144 files)

FILE: checks/check_add_to_hue_and_saturation.py
  function main (line 14) | def main():

FILE: checks/check_affine.py
  function main (line 20) | def main():

FILE: checks/check_affinecv2.py
  function main (line 18) | def main():

FILE: checks/check_average_blur.py
  function main (line 14) | def main():

FILE: checks/check_background_augmentation.py
  function main (line 13) | def main():
  function load_images (line 261) | def load_images(n_batches=10, sleep=0.0):
  function draw_grid (line 284) | def draw_grid(images_aug, keypoints_aug):

FILE: checks/check_bb_augmentation.py
  function main (line 20) | def main():

FILE: checks/check_bilateral_blur.py
  function main (line 12) | def main():

FILE: checks/check_blendalphasegmapclassids.py
  function main (line 7) | def main():

FILE: checks/check_blendalphasomecolors.py
  function main (line 7) | def main():

FILE: checks/check_brightness.py
  function main (line 7) | def main():

FILE: checks/check_canny.py
  function main (line 6) | def main():

FILE: checks/check_cartoon.py
  function main (line 8) | def main():

FILE: checks/check_channel_shuffle.py
  function main (line 8) | def main():

FILE: checks/check_clouds.py
  function main (line 9) | def main():

FILE: checks/check_color_temperature.py
  function main (line 7) | def main():

FILE: checks/check_contrast.py
  function main (line 11) | def main():

FILE: checks/check_crop_and_pad.py
  function main (line 8) | def main():

FILE: checks/check_cutout.py
  function main (line 6) | def main():

FILE: checks/check_deprecation_warning.py
  class Dummy1 (line 6) | class Dummy1(object):
    method __init__ (line 8) | def __init__(self):
  class Dummy2 (line 12) | class Dummy2(object):
    method __init__ (line 14) | def __init__(self):
  class Dummy3 (line 18) | class Dummy3(object):
    method __init__ (line 19) | def __init__(self):
    method foo (line 24) | def foo(self):
  function foo (line 29) | def foo():
  function main (line 33) | def main():

FILE: checks/check_directed_edge_detect.py
  function main (line 15) | def main():

FILE: checks/check_elastic_transformation.py
  function main (line 16) | def main():
  class ElasticTransformationScipy (line 132) | class ElasticTransformationScipy(iaa.ElasticTransformation):
    method map_coordinates (line 134) | def map_coordinates(cls, image, dx, dy, order=1, cval=0, mode="constan...
  class ElasticTransformationCv2 (line 227) | class ElasticTransformationCv2(iaa.ElasticTransformation):
    method map_coordinates (line 229) | def map_coordinates(cls, image, dx, dy, order=1, cval=0, mode="constan...

FILE: checks/check_fast_snowy_landscape.py
  function main (line 9) | def main():

FILE: checks/check_fixed_size.py
  function main (line 9) | def main():

FILE: checks/check_flip_performance.py
  function main (line 80) | def main():

FILE: checks/check_fog.py
  function main (line 9) | def main():

FILE: checks/check_heatmaps.py
  function main (line 9) | def main():

FILE: checks/check_impulse_noise.py
  function main (line 7) | def main():

FILE: checks/check_imshow.py
  function main (line 8) | def main():

FILE: checks/check_jigsaw.py
  function main (line 7) | def main():

FILE: checks/check_jpeg_compression.py
  function main (line 9) | def main():

FILE: checks/check_kmeans_color_quantization.py
  function main (line 7) | def main():

FILE: checks/check_laplace_noise.py
  function main (line 7) | def main():

FILE: checks/check_mean_shift_blur.py
  function main (line 6) | def main():

FILE: checks/check_median_blur.py
  function main (line 14) | def main():

FILE: checks/check_motion_blur.py
  function main (line 15) | def main():

FILE: checks/check_multicore_pool.py
  class PoolWithMarkedWorker (line 14) | class PoolWithMarkedWorker(multicore.Pool):
    method __init__ (line 15) | def __init__(self, *args, **kwargs):
    method _worker (line 19) | def _worker(cls, batch_idx, batch):
  function main (line 28) | def main():
  function load_images (line 321) | def load_images(n_batches=10, sleep=0.0, draw_text=True):
  function draw_grid (line 354) | def draw_grid(images_aug, keypoints_aug):

FILE: checks/check_multiply_hue_and_saturation.py
  function main (line 9) | def main():

FILE: checks/check_noise.py
  function main (line 10) | def main():

FILE: checks/check_parameters.py
  function main (line 13) | def main():

FILE: checks/check_performance.py
  function main (line 160) | def main():

FILE: checks/check_perspective_transform.py
  function main (line 9) | def main():

FILE: checks/check_piecewise_affine.py
  function main (line 12) | def main():
  function keypoints_draw_on_image (line 53) | def keypoints_draw_on_image(kps, image, color=[0, 255, 0], size=3, copy=...

FILE: checks/check_poisson_noise.py
  function main (line 6) | def main():

FILE: checks/check_polygons_stay_valid_during_augmentation.py
  function main (line 9) | def main():
  function create_random_polygon (line 44) | def create_random_polygon(height, width, seed):

FILE: checks/check_pooling.py
  function main (line 9) | def main():
  function run (line 16) | def run(clazz):

FILE: checks/check_quantize_uniform_to_n_bits.py
  function main (line 7) | def main():
  function posterize (line 41) | def posterize(arr, n_bits):

FILE: checks/check_rain.py
  function main (line 9) | def main():

FILE: checks/check_randaugment.py
  function main (line 9) | def main():

FILE: checks/check_readme_examples.py
  function main (line 17) | def main():
  function seeded (line 35) | def seeded(func):
  function example_simple_training_setting (line 45) | def example_simple_training_setting():
  function example_very_complex_augmentation_pipeline (line 87) | def example_very_complex_augmentation_pipeline():
  function example_augment_images_and_keypoints (line 180) | def example_augment_images_and_keypoints():
  function example_augment_images_and_bounding_boxes (line 207) | def example_augment_images_and_bounding_boxes():
  function example_augment_images_and_polygons (line 230) | def example_augment_images_and_polygons():
  function example_augment_images_and_linestrings (line 252) | def example_augment_images_and_linestrings():
  function example_augment_images_and_heatmaps (line 275) | def example_augment_images_and_heatmaps():
  function example_augment_images_and_segmentation_maps (line 295) | def example_augment_images_and_segmentation_maps():
  function example_visualize_augmented_images (line 315) | def example_visualize_augmented_images():
  function example_visualize_augmented_non_image_data (line 330) | def example_visualize_augmented_non_image_data():
  function example_using_augmenters_only_once (line 371) | def example_using_augmenters_only_once():
  function example_multicore_augmentation (line 389) | def example_multicore_augmentation():
  function example_probability_distributions_as_parameters (line 423) | def example_probability_distributions_as_parameters():
  function example_withchannels (line 445) | def example_withchannels():
  function example_hooks (line 464) | def example_hooks():

FILE: checks/check_remove_saturation.py
  function main (line 6) | def main():

FILE: checks/check_resize.py
  function main (line 11) | def main():

FILE: checks/check_rot90.py
  function main (line 6) | def main():

FILE: checks/check_seed.py
  function main (line 11) | def main():

FILE: checks/check_segmentation_maps.py
  function main (line 9) | def main():

FILE: checks/check_single_image_warning.py
  function main (line 8) | def main():

FILE: checks/check_snowflakes.py
  function main (line 9) | def main():

FILE: checks/check_snowflakes_layer.py
  function main (line 9) | def main():

FILE: checks/check_solarize.py
  function main (line 7) | def main():

FILE: checks/check_some_of.py
  function main (line 14) | def main():
  function to_grid (line 90) | def to_grid(rows, rows_kps):

FILE: checks/check_superpixels.py
  function main (line 18) | def main():

FILE: checks/check_uniform_color_quantization.py
  function main (line 7) | def main():

FILE: checks/check_visually.py
  function main (line 17) | def main():

FILE: checks/check_voronoi.py
  function main (line 9) | def main():

FILE: checks/check_with_hue_and_saturation.py
  function main (line 6) | def main():

FILE: checks/check_withchannels.py
  function main (line 13) | def main():

FILE: checks/check_withcolorspace.py
  function main (line 10) | def main():

FILE: imgaug/augmentables/base.py
  class IAugmentable (line 9) | class IAugmentable(object):

FILE: imgaug/augmentables/batches.py
  function _get_column_names (line 23) | def _get_column_names(batch, postfix):
  function _get_columns (line 29) | def _get_columns(batch, postfix):
  class UnnormalizedBatch (line 45) | class UnnormalizedBatch(object):
    method __init__ (line 133) | def __init__(self, images=None, heatmaps=None, segmentation_maps=None,
    method get_column_names (line 153) | def get_column_names(self):
    method to_normalized_batch (line 170) | def to_normalized_batch(self):
    method fill_from_augmented_normalized_batch_ (line 218) | def fill_from_augmented_normalized_batch_(self, batch_aug_norm):
    method fill_from_augmented_normalized_batch (line 259) | def fill_from_augmented_normalized_batch(self, batch_aug_norm):
  class Batch (line 314) | class Batch(object):
    method __init__ (line 350) | def __init__(self, images=None, heatmaps=None, segmentation_maps=None,
    method images (line 372) | def images(self):
    method heatmaps (line 378) | def heatmaps(self):
    method segmentation_maps (line 384) | def segmentation_maps(self):
    method keypoints (line 390) | def keypoints(self):
    method bounding_boxes (line 396) | def bounding_boxes(self):
    method get_column_names (line 400) | def get_column_names(self):
    method to_normalized_batch (line 417) | def to_normalized_batch(self):
    method to_batch_in_augmentation (line 433) | def to_batch_in_augmentation(self):
    method fill_from_batch_in_augmentation_ (line 460) | def fill_from_batch_in_augmentation_(self, batch_in_augmentation):
    method deepcopy (line 488) | def deepcopy(self,
  class _BatchInAugmentationPropagationContext (line 614) | class _BatchInAugmentationPropagationContext(object):
    method __init__ (line 615) | def __init__(self, batch, augmenter, hooks, parents):
    method __enter__ (line 622) | def __enter__(self):
    method __exit__ (line 628) | def __exit__(self, exc_type, exc_val, exc_tb):
  class _BatchInAugmentation (line 634) | class _BatchInAugmentation(object):
    method __init__ (line 670) | def __init__(self, images=None, heatmaps=None, segmentation_maps=None,
    method empty (line 684) | def empty(self):
    method nb_rows (line 699) | def nb_rows(self):
    method columns (line 720) | def columns(self):
    method get_column_names (line 736) | def get_column_names(self):
    method get_rowwise_shapes (line 753) | def get_rowwise_shapes(self):
    method subselect_rows_by_indices (line 787) | def subselect_rows_by_indices(self, indices):
    method invert_subselect_rows_by_indices_ (line 818) | def invert_subselect_rows_by_indices_(self, indices, batch_subselected):
    method propagation_hooks_ctx (line 890) | def propagation_hooks_ctx(self, augmenter, hooks, parents):
    method apply_propagation_hooks_ (line 915) | def apply_propagation_hooks_(self, augmenter, hooks, parents):
    method invert_apply_propagation_hooks_ (line 956) | def invert_apply_propagation_hooks_(self, noned_info):
    method to_batch_in_augmentation (line 983) | def to_batch_in_augmentation(self):
    method fill_from_batch_in_augmentation_ (line 999) | def fill_from_batch_in_augmentation_(self, batch_in_augmentation):
    method to_batch (line 1031) | def to_batch(self, batch_before_aug):
    method deepcopy (line 1070) | def deepcopy(self):

FILE: imgaug/augmentables/bbs.py
  class BoundingBox (line 22) | class BoundingBox(object):
    method __init__ (line 51) | def __init__(self, x1, y1, x2, y2, label=None):
    method coords (line 65) | def coords(self):
    method x1_int (line 83) | def x1_int(self):
    method y1_int (line 98) | def y1_int(self):
    method x2_int (line 113) | def x2_int(self):
    method y2_int (line 128) | def y2_int(self):
    method height (line 143) | def height(self):
    method width (line 155) | def width(self):
    method center_x (line 167) | def center_x(self):
    method center_y (line 179) | def center_y(self):
    method area (line 191) | def area(self):
    method contains (line 203) | def contains(self, other):
    method project_ (line 224) | def project_(self, from_shape, to_shape):
    method project (line 260) | def project(self, from_shape, to_shape):
    method extend_ (line 288) | def extend_(self, all_sides=0, top=0, right=0, bottom=0, left=0):
    method extend (line 328) | def extend(self, all_sides=0, top=0, right=0, bottom=0, left=0):
    method intersection (line 361) | def intersection(self, other, default=None):
    method union (line 393) | def union(self, other):
    method iou (line 417) | def iou(self, other):
    method compute_out_of_image_area (line 443) | def compute_out_of_image_area(self, image):
    method compute_out_of_image_fraction (line 470) | def compute_out_of_image_fraction(self, image):
    method is_fully_within_image (line 507) | def is_fully_within_image(self, image):
    method is_partly_within_image (line 533) | def is_partly_within_image(self, image):
    method is_out_of_image (line 558) | def is_out_of_image(self, image, fully=True, partly=False):
    method cut_out_of_image (line 594) | def cut_out_of_image(self, *args, **kwargs):
    method clip_out_of_image_ (line 598) | def clip_out_of_image_(self, image):
    method clip_out_of_image (line 634) | def clip_out_of_image(self, image):
    method shift_ (line 653) | def shift_(self, x=0, y=0):
    method shift (line 683) | def shift(self, x=0, y=0, top=None, right=None, bottom=None, left=None):
    method draw_label_on_image (line 729) | def draw_label_on_image(self, image, color=(0, 255, 0),
    method draw_box_on_image (line 801) | def draw_box_on_image(self, image, color=(0, 255, 0), alpha=1.0,
    method draw_on_image (line 902) | def draw_on_image(self, image, color=(0, 255, 0), alpha=1.0, size=1,
    method extract_from_image (line 964) | def extract_from_image(self, image, pad=True, pad_max=None,
    method to_keypoints (line 1095) | def to_keypoints(self):
    method to_polygon (line 1114) | def to_polygon(self):
    method coords_almost_equals (line 1136) | def coords_almost_equals(self, other, max_distance=1e-4):
    method almost_equals (line 1179) | def almost_equals(self, other, max_distance=1e-4):
    method from_point_soup (line 1210) | def from_point_soup(cls, xy):
    method copy (line 1250) | def copy(self, x1=None, y1=None, x2=None, y2=None, label=None):
    method deepcopy (line 1289) | def deepcopy(self, x1=None, y1=None, x2=None, y2=None, label=None):
    method __getitem__ (line 1325) | def __getitem__(self, indices):
    method __iter__ (line 1338) | def __iter__(self):
    method __repr__ (line 1351) | def __repr__(self):
    method __str__ (line 1354) | def __str__(self):
  class BoundingBoxesOnImage (line 1359) | class BoundingBoxesOnImage(IAugmentable):
    method __init__ (line 1385) | def __init__(self, bounding_boxes, shape):
    method items (line 1390) | def items(self):
    method items (line 1404) | def items(self, value):
    method height (line 1420) | def height(self):
    method width (line 1434) | def width(self):
    method empty (line 1446) | def empty(self):
    method on_ (line 1457) | def on_(self, image):
    method on (line 1487) | def on(self, image):
    method from_xyxy_array (line 1507) | def from_xyxy_array(cls, xyxy, shape):
    method from_point_soups (line 1551) | def from_point_soups(cls, xy, shape):
    method to_xyxy_array (line 1586) | def to_xyxy_array(self, dtype=np.float32):
    method to_xy_array (line 1612) | def to_xy_array(self):
    method fill_from_xyxy_array_ (line 1626) | def fill_from_xyxy_array_(self, xyxy):
    method fill_from_xy_array_ (line 1676) | def fill_from_xy_array_(self, xy):
    method draw_on_image (line 1701) | def draw_on_image(self, image, color=(0, 255, 0), alpha=1.0, size=1,
    method remove_out_of_image_ (line 1754) | def remove_out_of_image_(self, fully=True, partly=False):
    method remove_out_of_image (line 1784) | def remove_out_of_image(self, fully=True, partly=False):
    method remove_out_of_image_fraction_ (line 1806) | def remove_out_of_image_fraction_(self, fraction):
    method remove_out_of_image_fraction (line 1831) | def remove_out_of_image_fraction(self, fraction):
    method cut_out_of_image (line 1856) | def cut_out_of_image(self):
    method clip_out_of_image_ (line 1860) | def clip_out_of_image_(self):
    method clip_out_of_image (line 1882) | def clip_out_of_image(self):
    method shift_ (line 1893) | def shift_(self, x=0, y=0):
    method shift (line 1921) | def shift(self, x=0, y=0, top=None, right=None, bottom=None, left=None):
    method to_keypoints_on_image (line 1966) | def to_keypoints_on_image(self):
    method invert_to_keypoints_on_image_ (line 1998) | def invert_to_keypoints_on_image_(self, kpsoi):
    method to_polygons_on_image (line 2034) | def to_polygons_on_image(self):
    method copy (line 2051) | def copy(self, bounding_boxes=None, shape=None):
    method deepcopy (line 2078) | def deepcopy(self, bounding_boxes=None, shape=None):
    method __getitem__ (line 2106) | def __getitem__(self, indices):
    method __iter__ (line 2119) | def __iter__(self):
    method __len__ (line 2134) | def __len__(self):
    method __repr__ (line 2147) | def __repr__(self):
    method __str__ (line 2150) | def __str__(self):
  class _LabelOnImageDrawer (line 2156) | class _LabelOnImageDrawer(object):
    method __init__ (line 2159) | def __init__(self, color=(0, 255, 0), color_text=None, color_bg=None,
    method draw_on_image_ (line 2171) | def draw_on_image_(self, image, bounding_box):
    method draw_on_image (line 2193) | def draw_on_image(self, image, bounding_box):
    method _do_raise_if_out_of_image (line 2197) | def _do_raise_if_out_of_image(cls, image, bounding_box):
    method _preprocess_colors (line 2206) | def _preprocess_colors(self):
    method _compute_bg_corner_coords (line 2233) | def _compute_bg_corner_coords(self, image, bounding_box):
    method _draw_label_arr (line 2253) | def _draw_label_arr(cls, label, height, width, nb_channels, dtype,
    method _blend_label_arr_with_image_ (line 2264) | def _blend_label_arr_with_image_(self, image, label_arr, x1, y1, x2, y2):

FILE: imgaug/augmentables/heatmaps.py
  class HeatmapsOnImage (line 11) | class HeatmapsOnImage(IAugmentable):
    method __init__ (line 43) | def __init__(self, arr, shape, min_value=0.0, max_value=1.0):
    method get_arr (line 96) | def get_arr(self):
    method draw (line 129) | def draw(self, size=None, cmap="jet"):
    method draw_on_image (line 187) | def draw_on_image(self, image, alpha=0.75, cmap="jet", resize="heatmap...
    method invert (line 254) | def invert(self):
    method pad (line 286) | def pad(self, top=0, right=0, bottom=0, left=0, mode="constant", cval=...
    method pad_to_aspect_ratio (line 337) | def pad_to_aspect_ratio(self, aspect_ratio, mode="constant", cval=0.0,
    method avg_pool (line 396) | def avg_pool(self, block_size):
    method max_pool (line 418) | def max_pool(self, block_size):
    method scale (line 442) | def scale(self, *args, **kwargs):
    method resize (line 446) | def resize(self, sizes, interpolation="cubic"):
    method to_uint8 (line 479) | def to_uint8(self):
    method from_uint8 (line 497) | def from_uint8(arr_uint8, shape, min_value=0.0, max_value=1.0):
    method from_0to1 (line 541) | def from_0to1(arr_0to1, shape, min_value=0.0, max_value=1.0):
    method change_normalization (line 586) | def change_normalization(cls, arr, source, target):
    method copy (line 660) | def copy(self):
    method deepcopy (line 671) | def deepcopy(self):

FILE: imgaug/augmentables/kps.py
  function compute_geometric_median (line 18) | def compute_geometric_median(points=None, eps=1e-5, X=None):
  class Keypoint (line 74) | class Keypoint(object):
    method __init__ (line 87) | def __init__(self, x, y):
    method coords (line 92) | def coords(self):
    method x_int (line 109) | def x_int(self):
    method y_int (line 121) | def y_int(self):
    method xy (line 133) | def xy(self):
    method xy_int (line 147) | def xy_int(self):
    method project_ (line 160) | def project_(self, from_shape, to_shape):
    method project (line 192) | def project(self, from_shape, to_shape):
    method is_out_of_image (line 219) | def is_out_of_image(self, image):
    method compute_out_of_image_fraction (line 245) | def compute_out_of_image_fraction(self, image):
    method shift_ (line 271) | def shift_(self, x=0, y=0):
    method shift (line 295) | def shift(self, x=0, y=0):
    method draw_on_image (line 314) | def draw_on_image(self, image, color=(0, 255, 0), alpha=1.0, size=3,
    method generate_similar_points_manhattan (line 414) | def generate_similar_points_manhattan(self, nb_steps, step_size,
    method coords_almost_equals (line 493) | def coords_almost_equals(self, other, max_distance=1e-4):
    method almost_equals (line 532) | def almost_equals(self, other, max_distance=1e-4):
    method copy (line 560) | def copy(self, x=None, y=None):
    method deepcopy (line 581) | def deepcopy(self, x=None, y=None):
    method __repr__ (line 604) | def __repr__(self):
    method __str__ (line 607) | def __str__(self):
  class KeypointsOnImage (line 611) | class KeypointsOnImage(IAugmentable):
    method __init__ (line 635) | def __init__(self, keypoints, shape):
    method items (line 640) | def items(self):
    method items (line 654) | def items(self, value):
    method height (line 668) | def height(self):
    method width (line 680) | def width(self):
    method empty (line 692) | def empty(self):
    method on_ (line 703) | def on_(self, image):
    method on (line 732) | def on(self, image):
    method draw_on_image (line 750) | def draw_on_image(self, image, color=(0, 255, 0), alpha=1.0, size=3,
    method remove_out_of_image_fraction_ (line 796) | def remove_out_of_image_fraction_(self, fraction):
    method remove_out_of_image_fraction (line 825) | def remove_out_of_image_fraction(self, fraction):
    method clip_out_of_image_ (line 851) | def clip_out_of_image_(self):
    method clip_out_of_image (line 869) | def clip_out_of_image(self):
    method shift_ (line 885) | def shift_(self, x=0, y=0):
    method shift (line 909) | def shift(self, x=0, y=0):
    method get_coords_array (line 929) | def get_coords_array(self):
    method to_xy_array (line 942) | def to_xy_array(self):
    method from_coords_array (line 961) | def from_coords_array(coords, shape):
    method from_xy_array (line 982) | def from_xy_array(cls, xy, shape):
    method fill_from_xy_array_ (line 1012) | def fill_from_xy_array_(self, xy):
    method to_keypoint_image (line 1056) | def to_keypoint_image(self, size=1):
    method from_keypoint_image (line 1104) | def from_keypoint_image(image, if_not_found_coords={"x": -1, "y": -1},
    method to_distance_maps (line 1190) | def to_distance_maps(self, inverted=False):
    method from_distance_maps (line 1236) | def from_distance_maps(distance_maps, inverted=False,
    method to_keypoints_on_image (line 1341) | def to_keypoints_on_image(self):
    method invert_to_keypoints_on_image_ (line 1357) | def invert_to_keypoints_on_image_(self, kpsoi):
    method copy (line 1390) | def copy(self, keypoints=None, shape=None):
    method deepcopy (line 1417) | def deepcopy(self, keypoints=None, shape=None):
    method __getitem__ (line 1445) | def __getitem__(self, indices):
    method __iter__ (line 1458) | def __iter__(self):
    method __len__ (line 1473) | def __len__(self):
    method __repr__ (line 1486) | def __repr__(self):
    method __str__ (line 1489) | def __str__(self):

FILE: imgaug/augmentables/lines.py
  class LineString (line 27) | class LineString(object):
    method __init__ (line 48) | def __init__(self, coords, label=None):
    method length (line 73) | def length(self):
    method xx (line 88) | def xx(self):
    method yy (line 100) | def yy(self):
    method xx_int (line 112) | def xx_int(self):
    method yy_int (line 128) | def yy_int(self):
    method height (line 144) | def height(self):
    method width (line 161) | def width(self):
    method get_pointwise_inside_image_mask (line 177) | def get_pointwise_inside_image_mask(self, image):
    method compute_neighbour_distances (line 204) | def compute_neighbour_distances(self):
    method compute_pointwise_distances (line 224) | def compute_pointwise_distances(self, other, default=None):
    method compute_distance (line 268) | def compute_distance(self, other, default=None):
    method contains (line 294) | def contains(self, other, max_distance=1e-4):
    method project_ (line 318) | def project_(self, from_shape, to_shape):
    method project (line 349) | def project(self, from_shape, to_shape):
    method compute_out_of_image_fraction (line 376) | def compute_out_of_image_fraction(self, image):
    method is_fully_within_image (line 414) | def is_fully_within_image(self, image, default=False):
    method is_partly_within_image (line 438) | def is_partly_within_image(self, image, default=False):
    method is_out_of_image (line 468) | def is_out_of_image(self, image, fully=True, partly=False, default=True):
    method clip_out_of_image (line 507) | def clip_out_of_image(self, image):
    method find_intersections_with (line 621) | def find_intersections_with(self, other):
    method shift_ (line 676) | def shift_(self, x=0, y=0):
    method shift (line 704) | def shift(self, x=0, y=0, top=None, right=None, bottom=None, left=None):
    method draw_mask (line 749) | def draw_mask(self, image_shape, size_lines=1, size_points=0,
    method draw_lines_heatmap_array (line 783) | def draw_lines_heatmap_array(self, image_shape, alpha=1.0,
    method draw_points_heatmap_array (line 828) | def draw_points_heatmap_array(self, image_shape, alpha=1.0,
    method draw_heatmap_array (line 869) | def draw_heatmap_array(self, image_shape, alpha_lines=1.0, alpha_point...
    method draw_lines_on_image (line 930) | def draw_lines_on_image(self, image, color=(0, 255, 0),
    method draw_points_on_image (line 1057) | def draw_points_on_image(self, image, color=(0, 128, 0),
    method draw_on_image (line 1109) | def draw_on_image(self, image,
    method extract_from_image (line 1215) | def extract_from_image(self, image, size=1, pad=True, pad_max=None,
    method concatenate (line 1310) | def concatenate(self, other):
    method subdivide (line 1334) | def subdivide(self, points_per_edge):
    method to_keypoints (line 1365) | def to_keypoints(self):
    method to_bounding_box (line 1378) | def to_bounding_box(self):
    method to_polygon (line 1397) | def to_polygon(self):
    method to_heatmap (line 1411) | def to_heatmap(self, image_shape, size_lines=1, size_points=0,
    method to_segmentation_map (line 1455) | def to_segmentation_map(self, image_shape, size_lines=1, size_points=0,
    method coords_almost_equals (line 1495) | def coords_almost_equals(self, other, max_distance=1e-4, points_per_ed...
    method almost_equals (line 1544) | def almost_equals(self, other, max_distance=1e-4, points_per_edge=8):
    method copy (line 1571) | def copy(self, coords=None, label=None):
    method deepcopy (line 1593) | def deepcopy(self, coords=None, label=None):
    method __getitem__ (line 1616) | def __getitem__(self, indices):
    method __iter__ (line 1629) | def __iter__(self):
    method __repr__ (line 1642) | def __repr__(self):
    method __str__ (line 1645) | def __str__(self):
  class LineStringsOnImage (line 1665) | class LineStringsOnImage(IAugmentable):
    method __init__ (line 1692) | def __init__(self, line_strings, shape):
    method items (line 1704) | def items(self):
    method items (line 1718) | def items(self, value):
    method empty (line 1732) | def empty(self):
    method on_ (line 1743) | def on_(self, image):
    method on (line 1773) | def on(self, image):
    method from_xy_arrays (line 1793) | def from_xy_arrays(cls, xy, shape):
    method to_xy_arrays (line 1823) | def to_xy_arrays(self, dtype=np.float32):
    method draw_on_image (line 1844) | def draw_on_image(self, image,
    method remove_out_of_image_ (line 1928) | def remove_out_of_image_(self, fully=True, partly=False):
    method remove_out_of_image (line 1956) | def remove_out_of_image(self, fully=True, partly=False):
    method remove_out_of_image_fraction_ (line 1978) | def remove_out_of_image_fraction_(self, fraction):
    method remove_out_of_image_fraction (line 2003) | def remove_out_of_image_fraction(self, fraction):
    method clip_out_of_image_ (line 2023) | def clip_out_of_image_(self):
    method clip_out_of_image (line 2055) | def clip_out_of_image(self):
    method shift_ (line 2081) | def shift_(self, x=0, y=0):
    method shift (line 2109) | def shift(self, x=0, y=0, top=None, right=None, bottom=None, left=None):
    method to_xy_array (line 2154) | def to_xy_array(self):
    method fill_from_xy_array_ (line 2170) | def fill_from_xy_array_(self, xy):
    method to_keypoints_on_image (line 2221) | def to_keypoints_on_image(self):
    method invert_to_keypoints_on_image_ (line 2244) | def invert_to_keypoints_on_image_(self, kpsoi):
    method copy (line 2282) | def copy(self, line_strings=None, shape=None):
    method deepcopy (line 2313) | def deepcopy(self, line_strings=None, shape=None):
    method __getitem__ (line 2345) | def __getitem__(self, indices):
    method __iter__ (line 2358) | def __iter__(self):
    method __len__ (line 2373) | def __len__(self):
    method __repr__ (line 2386) | def __repr__(self):
    method __str__ (line 2389) | def __str__(self):
  function _is_point_on_line (line 2394) | def _is_point_on_line(line_start, line_end, point, eps=1e-4):
  function _flatten_shapely_collection (line 2403) | def _flatten_shapely_collection(collection):
  function _convert_var_to_shapely_geometry (line 2420) | def _convert_var_to_shapely_geometry(var):

FILE: imgaug/augmentables/normalization.py
  function _preprocess_shapes (line 12) | def _preprocess_shapes(shapes):
  function _assert_exactly_n_shapes (line 36) | def _assert_exactly_n_shapes(shapes, n, from_ntype, to_ntype):
  function _assert_single_array_ndim (line 63) | def _assert_single_array_ndim(arr, ndim, shape_str, to_ntype):
  function _assert_many_arrays_ndim (line 72) | def _assert_many_arrays_ndim(arrs, ndim, shape_str, to_ntype):
  function _assert_single_array_last_dim_exactly (line 97) | def _assert_single_array_last_dim_exactly(arr, size, to_ntype):
  function _assert_many_arrays_last_dim_exactly (line 106) | def _assert_many_arrays_last_dim_exactly(arrs, size, to_ntype):
  function normalize_images (line 130) | def normalize_images(images):
  function normalize_heatmaps (line 159) | def normalize_heatmaps(inputs, shapes=None):
  function normalize_segmentation_maps (line 190) | def normalize_segmentation_maps(inputs, shapes=None):
  function normalize_keypoints (line 233) | def normalize_keypoints(inputs, shapes=None):
  function normalize_bounding_boxes (line 306) | def normalize_bounding_boxes(inputs, shapes=None):
  function normalize_polygons (line 389) | def normalize_polygons(inputs, shapes=None):
  function normalize_line_strings (line 402) | def normalize_line_strings(inputs, shapes=None):
  function _normalize_polygons_and_line_strings (line 415) | def _normalize_polygons_and_line_strings(cls_single, cls_oi, axis_names,
  function invert_normalize_images (line 525) | def invert_normalize_images(images, images_old):
  function invert_normalize_heatmaps (line 589) | def invert_normalize_heatmaps(heatmaps, heatmaps_old):
  function invert_normalize_segmentation_maps (line 629) | def invert_normalize_segmentation_maps(segmentation_maps,
  function invert_normalize_keypoints (line 672) | def invert_normalize_keypoints(keypoints, keypoints_old):
  function invert_normalize_bounding_boxes (line 765) | def invert_normalize_bounding_boxes(bounding_boxes, bounding_boxes_old):
  function invert_normalize_polygons (line 864) | def invert_normalize_polygons(polygons, polygons_old):
  function invert_normalize_line_strings (line 873) | def invert_normalize_line_strings(line_strings, line_strings_old):
  function _invert_normalize_polygons_and_line_strings (line 882) | def _invert_normalize_polygons_and_line_strings(inputs, inputs_old,
  function _assert_is_of_norm_type (line 1051) | def _assert_is_of_norm_type(type_str, valid_type_strs, arg_name):
  function estimate_heatmaps_norm_type (line 1058) | def estimate_heatmaps_norm_type(heatmaps):
  function estimate_segmaps_norm_type (line 1072) | def estimate_segmaps_norm_type(segmentation_maps):
  function estimate_keypoints_norm_type (line 1091) | def estimate_keypoints_norm_type(keypoints):
  function estimate_bounding_boxes_norm_type (line 1116) | def estimate_bounding_boxes_norm_type(bounding_boxes):
  function estimate_polygons_norm_type (line 1142) | def estimate_polygons_norm_type(polygons):
  function estimate_line_strings_norm_type (line 1147) | def estimate_line_strings_norm_type(line_strings):
  function _estimate_polygons_and_line_segments_norm_type (line 1152) | def _estimate_polygons_and_line_segments_norm_type(inputs, cls_single_name,
  function estimate_normalization_type (line 1186) | def estimate_normalization_type(inputs):
  function restore_dtype_and_merge (line 1192) | def restore_dtype_and_merge(arr, input_dtype):
  function _is_iterable (line 1205) | def _is_iterable(obj):
  function find_first_nonempty (line 1214) | def find_first_nonempty(attr, parents=None):
  function _nonempty_info_to_type_str (line 1257) | def _nonempty_info_to_type_str(nonempty, success, parents):

FILE: imgaug/augmentables/polys.py
  function recover_psois_ (line 26) | def recover_psois_(psois, psois_orig, recoverer, random_state):
  class Polygon (line 80) | class Polygon(object):
    method __init__ (line 104) | def __init__(self, exterior, label=None):
    method coords (line 148) | def coords(self):
    method xx (line 163) | def xx(self):
    method yy (line 175) | def yy(self):
    method xx_int (line 187) | def xx_int(self):
    method yy_int (line 203) | def yy_int(self):
    method is_valid (line 219) | def is_valid(self):
    method area (line 239) | def area(self):
    method height (line 254) | def height(self):
    method width (line 270) | def width(self):
    method project_ (line 285) | def project_(self, from_shape, to_shape):
    method project (line 316) | def project(self, from_shape, to_shape):
    method find_closest_point_index (line 343) | def find_closest_point_index(self, x, y, return_distance=False):
    method compute_out_of_image_area (line 385) | def compute_out_of_image_area(self, image):
    method compute_out_of_image_fraction (line 410) | def compute_out_of_image_fraction(self, image):
    method is_fully_within_image (line 444) | def is_fully_within_image(self, image):
    method is_partly_within_image (line 465) | def is_partly_within_image(self, image):
    method is_out_of_image (line 485) | def is_out_of_image(self, image, fully=True, partly=False):
    method cut_out_of_image (line 544) | def cut_out_of_image(self, image):
    method clip_out_of_image (line 550) | def clip_out_of_image(self, image):
    method shift_ (line 654) | def shift_(self, x=0, y=0):
    method shift (line 682) | def shift(self, x=0, y=0, top=None, right=None, bottom=None, left=None):
    method draw_on_image (line 729) | def draw_on_image(self,
    method extract_from_image (line 909) | def extract_from_image(self, image):
    method change_first_point_by_coords (line 961) | def change_first_point_by_coords(self, x, y, max_distance=1e-4,
    method change_first_point_by_index (line 1012) | def change_first_point_by_index(self, point_idx):
    method subdivide_ (line 1045) | def subdivide_(self, points_per_edge):
    method subdivide (line 1073) | def subdivide(self, points_per_edge):
    method to_shapely_polygon (line 1093) | def to_shapely_polygon(self):
    method to_shapely_line_string (line 1108) | def to_shapely_line_string(self, closed=False, interpolate=0):
    method to_bounding_box (line 1130) | def to_bounding_box(self):
    method to_keypoints (line 1148) | def to_keypoints(self):
    method to_line_string (line 1163) | def to_line_string(self, closed=True):
    method from_shapely (line 1188) | def from_shapely(polygon_shapely, label=None):
    method coords_almost_equals (line 1227) | def coords_almost_equals(self, other, max_distance=1e-4,
    method exterior_almost_equals (line 1255) | def exterior_almost_equals(self, other, max_distance=1e-4,
    method almost_equals (line 1314) | def almost_equals(self, other, max_distance=1e-4, points_per_edge=8):
    method copy (line 1347) | def copy(self, exterior=None, label=None):
    method deepcopy (line 1368) | def deepcopy(self, exterior=None, label=None):
    method __getitem__ (line 1391) | def __getitem__(self, indices):
    method __iter__ (line 1404) | def __iter__(self):
    method __repr__ (line 1417) | def __repr__(self):
    method __str__ (line 1420) | def __str__(self):
  class PolygonsOnImage (line 1430) | class PolygonsOnImage(IAugmentable):
    method __init__ (line 1456) | def __init__(self, polygons, shape):
    method items (line 1461) | def items(self):
    method items (line 1475) | def items(self, value):
    method empty (line 1489) | def empty(self):
    method on_ (line 1500) | def on_(self, image):
    method on (line 1529) | def on(self, image):
    method draw_on_image (line 1547) | def draw_on_image(self,
    method remove_out_of_image_ (line 1657) | def remove_out_of_image_(self, fully=True, partly=False):
    method remove_out_of_image (line 1686) | def remove_out_of_image(self, fully=True, partly=False):
    method remove_out_of_image_fraction_ (line 1706) | def remove_out_of_image_fraction_(self, fraction):
    method remove_out_of_image_fraction (line 1729) | def remove_out_of_image_fraction(self, fraction):
    method clip_out_of_image_ (line 1751) | def clip_out_of_image_(self):
    method clip_out_of_image (line 1785) | def clip_out_of_image(self):
    method shift_ (line 1810) | def shift_(self, x=0, y=0):
    method shift (line 1837) | def shift(self, x=0, y=0, top=None, right=None, bottom=None, left=None):
    method subdivide_ (line 1882) | def subdivide_(self, points_per_edge):
    method subdivide (line 1902) | def subdivide(self, points_per_edge):
    method to_xy_array (line 1920) | def to_xy_array(self):
    method fill_from_xy_array_ (line 1936) | def fill_from_xy_array_(self, xy):
    method to_keypoints_on_image (line 1992) | def to_keypoints_on_image(self):
    method invert_to_keypoints_on_image_ (line 2013) | def invert_to_keypoints_on_image_(self, kpsoi):
    method copy (line 2051) | def copy(self, polygons=None, shape=None):
    method deepcopy (line 2082) | def deepcopy(self, polygons=None, shape=None):
    method __getitem__ (line 2114) | def __getitem__(self, indices):
    method __iter__ (line 2127) | def __iter__(self):
    method __len__ (line 2142) | def __len__(self):
    method __repr__ (line 2155) | def __repr__(self):
    method __str__ (line 2158) | def __str__(self):
  function _convert_points_to_shapely_line_string (line 2163) | def _convert_points_to_shapely_line_string(points, closed=False,
  class _ConcavePolygonRecoverer (line 2187) | class _ConcavePolygonRecoverer(object):
    method __init__ (line 2188) | def __init__(self, threshold_duplicate_points=1e-4, noise_strength=1e-4,
    method recover_from (line 2234) | def recover_from(self, new_exterior, old_polygon, random_state=0):
    method _remove_consecutive_duplicate_points (line 2285) | def _remove_consecutive_duplicate_points(self, points):
    method _fix_polygon_is_line (line 2304) | def _fix_polygon_is_line(self, exterior, random_state):
    method _is_polygon_line (line 2322) | def _is_polygon_line(cls, exterior):
    method _jitter_duplicate_points (line 2332) | def _jitter_duplicate_points(self, exterior, random_state):
    method _calculate_circumference (line 2398) | def _calculate_circumference(cls, points):
    method _generate_intersection_points (line 2411) | def _generate_intersection_points(self, exterior,
    method _oversample_intersection_points (line 2530) | def _oversample_intersection_points(self, exterior, segment_add_points):
    method _insert_intersection_points (line 2578) | def _insert_intersection_points(cls, exterior, segment_add_points):
    method _fit_best_valid_polygon (line 2593) | def _fit_best_valid_polygon(self, points, random_state):
  class MultiPolygon (line 2767) | class MultiPolygon(object):
    method __init__ (line 2777) | def __init__(self, geoms):
    method from_shapely (line 2787) | def from_shapely(geometry, label=None):

FILE: imgaug/augmentables/segmaps.py
  function SegmentationMapOnImage (line 18) | def SegmentationMapOnImage(*args, **kwargs):
  class SegmentationMapsOnImage (line 24) | class SegmentationMapsOnImage(IAugmentable):
    method __init__ (line 102) | def __init__(self, arr, shape, nb_classes=None):
    method get_arr (line 169) | def get_arr(self):
    method get_arr_int (line 205) | def get_arr_int(self, *args, **kwargs):
    method draw (line 210) | def draw(self, size=None, colors=None):
    method draw_on_image (line 260) | def draw_on_image(self, image, alpha=0.75, resize="segmentation_map",
    method pad (line 380) | def pad(self, top=0, right=0, bottom=0, left=0, mode="constant", cval=0):
    method pad_to_aspect_ratio (line 420) | def pad_to_aspect_ratio(self, aspect_ratio, mode="constant", cval=0,
    method scale (line 477) | def scale(self, *args, **kwargs):
    method resize (line 481) | def resize(self, sizes, interpolation="nearest"):
    method copy (line 507) | def copy(self, arr=None, shape=None):
    method deepcopy (line 539) | def deepcopy(self, arr=None, shape=None):

FILE: imgaug/augmentables/utils.py
  function copy_augmentables (line 10) | def copy_augmentables(augmentables):
  function deepcopy_fast (line 24) | def deepcopy_fast(obj):
  function _handle_on_image_shape (line 41) | def _handle_on_image_shape(shape, obj):
  function normalize_shape (line 63) | def normalize_shape(shape):
  function normalize_imglike_shape (line 84) | def normalize_imglike_shape(shape):
  function project_coords_ (line 114) | def project_coords_(coords, from_shape, to_shape):
  function project_coords (line 166) | def project_coords(coords, from_shape, to_shape):
  function interpolate_point_pair (line 198) | def interpolate_point_pair(point_a, point_b, nb_steps):
  function interpolate_points (line 231) | def interpolate_points(points, nb_steps, closed=True):
  function interpolate_points_by_max_distance (line 273) | def interpolate_points_by_max_distance(points, max_distance, closed=True):
  function convert_cbaois_to_kpsois (line 325) | def convert_cbaois_to_kpsois(cbaois):
  function invert_convert_cbaois_to_kpsois_ (line 351) | def invert_convert_cbaois_to_kpsois_(cbaois, kpsois):
  function _remove_out_of_image_fraction_ (line 390) | def _remove_out_of_image_fraction_(cbaoi, fraction):
  function _normalize_shift_args (line 398) | def _normalize_shift_args(x, y, top=None, right=None, bottom=None, left=...

FILE: imgaug/augmenters/arithmetic.py
  function add_scalar (line 62) | def add_scalar(image, value):
  function add_scalar_ (line 106) | def add_scalar_(image, value):
  function _add_scalar_to_uint8_ (line 163) | def _add_scalar_to_uint8_(image, value):
  function _add_scalar_to_non_uint8 (line 190) | def _add_scalar_to_non_uint8(image, value):
  function add_elementwise (line 233) | def add_elementwise(image, values):
  function _add_elementwise_cv2_to_uint8 (line 312) | def _add_elementwise_cv2_to_uint8(image, values):
  function _add_elementwise_np_to_uint8 (line 333) | def _add_elementwise_np_to_uint8(image, values):
  function _add_elementwise_np_to_non_uint8 (line 355) | def _add_elementwise_np_to_non_uint8(image, values):
  function multiply_scalar (line 400) | def multiply_scalar(image, multiplier):
  function multiply_scalar_ (line 458) | def multiply_scalar_(image, multiplier):
  function _multiply_scalar_to_uint8_lut_ (line 536) | def _multiply_scalar_to_uint8_lut_(image, multiplier):
  function _multiply_scalar_to_uint8_cv2_mul_ (line 570) | def _multiply_scalar_to_uint8_cv2_mul_(image, multiplier):
  function _multiply_scalar_to_non_uint8 (line 589) | def _multiply_scalar_to_non_uint8(image, multiplier):
  function multiply_elementwise (line 639) | def multiply_elementwise(image, multipliers):
  function multiply_elementwise_ (line 695) | def multiply_elementwise_(image, multipliers):
  function _multiply_elementwise_to_uint8_ (line 769) | def _multiply_elementwise_to_uint8_(image, multipliers):
  function _multiply_elementwise_to_non_uint8 (line 801) | def _multiply_elementwise_to_non_uint8(image, multipliers):
  function cutout (line 846) | def cutout(image, x1, y1, x2, y2,
  function cutout_ (line 906) | def cutout_(image, x1, y1, x2, y2,
  function _fill_rectangle_gaussian_ (line 999) | def _fill_rectangle_gaussian_(image, x1, y1, x2, y2, cval, per_channel,
  function _fill_rectangle_constant_ (line 1065) | def _fill_rectangle_constant_(image, x1, y1, x2, y2, cval, per_channel,
  function replace_elementwise_ (line 1111) | def replace_elementwise_(image, mask, replacements):
  function invert (line 1219) | def invert(image, min_value=None, max_value=None, threshold=None,
  function invert_ (line 1255) | def invert_(image, min_value=None, max_value=None, threshold=None,
  function _invert_bool (line 1404) | def _invert_bool(arr, min_value, max_value):
  function _invert_uint8_ (line 1412) | def _invert_uint8_(arr, min_value, max_value, threshold,
  function _invert_uint8_lut_pregenerated_ (line 1430) | def _invert_uint8_lut_pregenerated_(arr, min_value, max_value, threshold,
  function _invert_uint8_subtract_ (line 1443) | def _invert_uint8_subtract_(arr, max_value):
  function _invert_uint16_or_larger_ (line 1464) | def _invert_uint16_or_larger_(arr, min_value, max_value):
  function _invert_int_ (line 1476) | def _invert_int_(arr, min_value, max_value):
  function _invert_float (line 1516) | def _invert_float(arr, min_value, max_value):
  function _invert_by_distance (line 1525) | def _invert_by_distance(arr, min_value, max_value):
  function _generate_table_for_invert_uint8 (line 1543) | def _generate_table_for_invert_uint8(min_value, max_value, threshold,
  class _InvertTables (line 1571) | class _InvertTables(object):
    method __init__ (line 1573) | def __init__(self):
    method get_table (line 1577) | def get_table(self, min_value, max_value, threshold,
  class _InvertTablesSingleton (line 1594) | class _InvertTablesSingleton(object):
    method get_instance (line 1599) | def get_instance(cls):
  function solarize (line 1605) | def solarize(image, threshold=128):
  function solarize_ (line 1631) | def solarize_(image, threshold=128):
  function compress_jpeg (line 1665) | def compress_jpeg(image, compression):
  class Add (line 1764) | class Add(meta.Augmenter):
    method __init__ (line 1840) | def __init__(self, value=(-20, 20), per_channel=False,
    method _augment_batch_ (line 1854) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1900) | def get_parameters(self):
  class AddElementwise (line 1906) | class AddElementwise(meta.Augmenter):
    method __init__ (line 1986) | def __init__(self, value=(-20, 20), per_channel=False,
    method _augment_batch_ (line 2000) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 2022) | def get_parameters(self):
  class AdditiveGaussianNoise (line 2032) | class AdditiveGaussianNoise(AddElementwise):
    method __init__ (line 2124) | def __init__(self, loc=0, scale=(0, 15), per_channel=False,
  class AdditiveLaplaceNoise (line 2144) | class AdditiveLaplaceNoise(AddElementwise):
    method __init__ (line 2247) | def __init__(self, loc=0, scale=(0, 15), per_channel=False,
  class AdditivePoissonNoise (line 2268) | class AdditivePoissonNoise(AddElementwise):
    method __init__ (line 2363) | def __init__(self, lam=(0.0, 15.0), per_channel=False,
  class Multiply (line 2379) | class Multiply(meta.Augmenter):
    method __init__ (line 2455) | def __init__(self, mul=(0.8, 1.2), per_channel=False,
    method _augment_batch_ (line 2469) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 2514) | def get_parameters(self):
  class MultiplyElementwise (line 2520) | class MultiplyElementwise(meta.Augmenter):
    method __init__ (line 2599) | def __init__(self, mul=(0.8, 1.2), per_channel=False,
    method _augment_batch_ (line 2613) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 2646) | def get_parameters(self):
  class _CutoutSamples (line 2652) | class _CutoutSamples(object):
    method __init__ (line 2654) | def __init__(self, nb_iterations, pos_x, pos_y, size_h, size_w, squared,
  class Cutout (line 2667) | class Cutout(meta.Augmenter):
    method __init__ (line 2835) | def __init__(self,
    method _handle_fill_mode_param (line 2866) | def _handle_fill_mode_param(cls, fill_mode):
    method _augment_batch_ (line 2881) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 2921) | def _draw_samples(self, images, random_state):
    method _augment_image_by_samples (line 2968) | def _augment_image_by_samples(cls, image, x1, y1, x2, y2, squared,
    method get_parameters (line 2992) | def get_parameters(self):
  class Dropout (line 3000) | class Dropout(MultiplyElementwise):
    method __init__ (line 3080) | def __init__(self, p=(0.0, 0.05), per_channel=False,
  function _handle_dropout_probability_param (line 3093) | def _handle_dropout_probability_param(p, name):
  class CoarseDropout (line 3130) | class CoarseDropout(MultiplyElementwise):
    method __init__ (line 3280) | def __init__(self, p=(0.02, 0.1), size_px=None, size_percent=None,
  class Dropout2d (line 3308) | class Dropout2d(meta.Augmenter):
    method __init__ (line 3401) | def __init__(self, p=0.1, nb_keep_channels=1,
    method _augment_batch_ (line 3422) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 3459) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 3503) | def get_parameters(self):
  class TotalDropout (line 3508) | class TotalDropout(meta.Augmenter):
    method __init__ (line 3589) | def __init__(self, p=1,
    method _augment_batch_ (line 3609) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 3647) | def _draw_samples(self, batch, random_state):
    method _generate_drop_ids_once (line 3654) | def _generate_drop_ids_once(cls, drop_mask, drop_ids):
    method get_parameters (line 3660) | def get_parameters(self):
  class ReplaceElementwise (line 3665) | class ReplaceElementwise(meta.Augmenter):
    method __init__ (line 3771) | def __init__(self, mask, replacement, per_channel=False,
    method _augment_batch_ (line 3786) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 3830) | def get_parameters(self):
  class SaltAndPepper (line 3835) | class SaltAndPepper(ReplaceElementwise):
    method __init__ (line 3900) | def __init__(self, p=(0.0, 0.03), per_channel=False,
  class ImpulseNoise (line 3911) | class ImpulseNoise(SaltAndPepper):
    method __init__ (line 3963) | def __init__(self, p=(0.0, 0.03),
  class CoarseSaltAndPepper (line 3973) | class CoarseSaltAndPepper(ReplaceElementwise):
    method __init__ (line 4103) | def __init__(self, p=(0.02, 0.1), size_px=None, size_percent=None,
  class Salt (line 4130) | class Salt(ReplaceElementwise):
    method __init__ (line 4193) | def __init__(self, p=(0.0, 0.03), per_channel=False,
  class CoarseSalt (line 4212) | class CoarseSalt(ReplaceElementwise):
    method __init__ (line 4322) | def __init__(self, p=(0.02, 0.1), size_px=None, size_percent=None,
  class Pepper (line 4354) | class Pepper(ReplaceElementwise):
    method __init__ (line 4420) | def __init__(self, p=(0.0, 0.05), per_channel=False,
  class CoarsePepper (line 4438) | class CoarsePepper(ReplaceElementwise):
    method __init__ (line 4546) | def __init__(self, p=(0.02, 0.1), size_px=None, size_percent=None,
  class Invert (line 4578) | class Invert(meta.Augmenter):
    method __init__ (line 4701) | def __init__(self, p=1, per_channel=False, min_value=None, max_value=N...
    method _augment_batch_ (line 4726) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 4754) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 4785) | def get_parameters(self):
  class _InvertSamples (line 4792) | class _InvertSamples(object):
    method __init__ (line 4794) | def __init__(self, p, per_channel, min_value, max_value,
  class Solarize (line 4804) | class Solarize(Invert):
    method __init__ (line 4866) | def __init__(self, p=1, per_channel=False, min_value=None, max_value=N...
  function ContrastNormalization (line 4880) | def ContrastNormalization(alpha=1.0, per_channel=False,
  class JpegCompression (line 4962) | class JpegCompression(meta.Augmenter):
    method __init__ (line 5030) | def __init__(self, compression=(0, 100),
    method _augment_batch_ (line 5044) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 5058) | def get_parameters(self):

FILE: imgaug/augmenters/artistic.py
  function stylize_cartoon (line 24) | def stylize_cartoon(image, blur_ksize=3, segmentation_size=1.0,
  function _find_edges_canny (line 155) | def _find_edges_canny(image, edge_multiplier, from_colorspace):
  function _find_edges_laplacian (line 166) | def _find_edges_laplacian(image, edge_multiplier, from_colorspace):
  function _blur_median (line 185) | def _blur_median(image, ksize):
  function _threshold (line 194) | def _threshold(image, thresh):
  function _suppress_edge_blobs (line 202) | def _suppress_edge_blobs(edges, size, thresh, inverse):
  function _saturate (line 217) | def _saturate(image, factor, from_colorspace):
  function _blend_edges (line 235) | def _blend_edges(image, image_edges):
  class Cartoon (line 244) | class Cartoon(meta.Augmenter):
    method __init__ (line 352) | def __init__(self, blur_ksize=(1, 5), segmentation_size=(0.8, 1.2),
    method _augment_batch_ (line 376) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 391) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 403) | def get_parameters(self):

FILE: imgaug/augmenters/base.py
  class SuspiciousMultiImageShapeWarning (line 13) | class SuspiciousMultiImageShapeWarning(UserWarning):
  class SuspiciousSingleImageShapeWarning (line 17) | class SuspiciousSingleImageShapeWarning(UserWarning):
  function _warn_on_suspicious_multi_image_shapes (line 21) | def _warn_on_suspicious_multi_image_shapes(images):
  function _warn_on_suspicious_single_image_shape (line 42) | def _warn_on_suspicious_single_image_shape(image):

FILE: imgaug/augmenters/blend.py
  function _split_1d_array_to_list (line 37) | def _split_1d_array_to_list(arr, sizes):
  function blend_alpha (line 46) | def blend_alpha(image_fg, image_bg, alpha, eps=1e-2):
  function blend_alpha_ (line 93) | def blend_alpha_(image_fg, image_bg, alpha, eps=1e-2):
  function _blend_alpha_uint8_single_alpha_ (line 265) | def _blend_alpha_uint8_single_alpha_(image_fg, image_bg, alpha, inplace):
  function _blend_alpha_uint8_channelwise_alphas_ (line 281) | def _blend_alpha_uint8_channelwise_alphas_(image_fg, image_bg, alphas):
  function _blend_alpha_uint8_elementwise_ (line 299) | def _blend_alpha_uint8_elementwise_(image_fg, image_bg, alphas):
  function _blend_alpha_non_uint8 (line 348) | def _blend_alpha_non_uint8(image_fg, image_bg, alpha):
  function _merge_channels (line 398) | def _merge_channels(channels, input_was_3d):
  function _generate_branch_outputs (line 409) | def _generate_branch_outputs(augmenter, batch, hooks, parents):
  function _to_deterministic (line 440) | def _to_deterministic(augmenter):
  class BlendAlpha (line 455) | class BlendAlpha(meta.Augmenter):
    method __init__ (line 593) | def __init__(self, factor=(0.0, 1.0), foreground=None, background=None,
    method _augment_batch_ (line 619) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _to_deterministic (line 669) | def _to_deterministic(self):
    method get_parameters (line 673) | def get_parameters(self):
    method get_children_lists (line 678) | def get_children_lists(self):
    method __str__ (line 684) | def __str__(self):
  class BlendAlphaMask (line 698) | class BlendAlphaMask(meta.Augmenter):
    method __init__ (line 806) | def __init__(self, mask_generator,
    method _augment_batch_ (line 845) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _binarize_mask (line 893) | def _binarize_mask(cls, mask, arr_height, arr_width):
    method _blend_coordinates (line 916) | def _blend_coordinates(cls, cbaoi, cbaoi_fg, cbaoi_bg, mask_image,
    method _to_deterministic (line 982) | def _to_deterministic(self):
    method get_parameters (line 986) | def get_parameters(self):
    method get_children_lists (line 991) | def get_children_lists(self):
    method __str__ (line 997) | def __str__(self):
  class BlendAlphaElementwise (line 1011) | class BlendAlphaElementwise(BlendAlphaMask):
    method __init__ (line 1148) | def __init__(self, factor=(0.0, 1.0), foreground=None, background=None,
    method factor (line 1163) | def factor(self):
  class BlendAlphaSimplexNoise (line 1167) | class BlendAlphaSimplexNoise(BlendAlphaElementwise):
    method __init__ (line 1348) | def __init__(self, foreground=None, background=None, per_channel=False,
  class BlendAlphaFrequencyNoise (line 1391) | class BlendAlphaFrequencyNoise(BlendAlphaElementwise):
    method __init__ (line 1598) | def __init__(self, exponent=(-4, 4), foreground=None, background=None,
  class BlendAlphaSomeColors (line 1643) | class BlendAlphaSomeColors(BlendAlphaMask):
    method __init__ (line 1768) | def __init__(self, foreground=None, background=None,
  class BlendAlphaHorizontalLinearGradient (line 1789) | class BlendAlphaHorizontalLinearGradient(BlendAlphaMask):
    method __init__ (line 1893) | def __init__(self, foreground=None, background=None,
  class BlendAlphaVerticalLinearGradient (line 1911) | class BlendAlphaVerticalLinearGradient(BlendAlphaMask):
    method __init__ (line 2022) | def __init__(self, foreground=None, background=None,
  class BlendAlphaRegularGrid (line 2040) | class BlendAlphaRegularGrid(BlendAlphaMask):
    method __init__ (line 2150) | def __init__(self, nb_rows, nb_cols,
  class BlendAlphaCheckerboard (line 2168) | class BlendAlphaCheckerboard(BlendAlphaMask):
    method __init__ (line 2254) | def __init__(self, nb_rows, nb_cols,
  class BlendAlphaSegMapClassIds (line 2269) | class BlendAlphaSegMapClassIds(BlendAlphaMask):
    method __init__ (line 2384) | def __init__(self,
  class BlendAlphaBoundingBoxes (line 2401) | class BlendAlphaBoundingBoxes(BlendAlphaMask):
    method __init__ (line 2513) | def __init__(self,
  class IBatchwiseMaskGenerator (line 2531) | class IBatchwiseMaskGenerator(object):
    method draw_masks (line 2543) | def draw_masks(self, batch, random_state=None):
  class StochasticParameterMaskGen (line 2569) | class StochasticParameterMaskGen(IBatchwiseMaskGenerator):
    method __init__ (line 2600) | def __init__(self, parameter, per_channel):
    method draw_masks (line 2607) | def draw_masks(self, batch, random_state=None):
    method _draw_mask (line 2622) | def _draw_mask(self, shape, random_state, per_channel):
  class SomeColorsMaskGen (line 2648) | class SomeColorsMaskGen(IBatchwiseMaskGenerator):
    method __init__ (line 2752) | def __init__(self, nb_bins=(5, 15), smoothness=(0.1, 0.3),
    method draw_masks (line 2775) | def draw_masks(self, batch, random_state=None):
    method _draw_mask (line 2791) | def _draw_mask(self, image, image_idx, samples):
    method _draw_samples (line 2800) | def _draw_samples(self, batch, random_state):
    method generate_mask (line 2823) | def generate_mask(cls, image, binwise_alphas, sigma,
    method _upscale_to_256_alpha_bins (line 2882) | def _upscale_to_256_alpha_bins(cls, alphas):
    method _rotate_alpha_bins (line 2892) | def _rotate_alpha_bins(cls, alphas, rotation_bins):
    method _smoothen_alphas (line 2901) | def _smoothen_alphas(cls, alphas, sigma):
    method _generate_pixelwise_alpha_mask (line 2933) | def _generate_pixelwise_alpha_mask(cls, image_hsv, hue_to_alpha):
  class _LinearGradientMaskGen (line 2942) | class _LinearGradientMaskGen(IBatchwiseMaskGenerator):
    method __init__ (line 2944) | def __init__(self, axis, min_value=0.0, max_value=1.0,
    method draw_masks (line 2960) | def draw_masks(self, batch, random_state=None):
    method _draw_mask (line 2976) | def _draw_mask(self, shape, image_idx, samples):
    method _draw_samples (line 2985) | def _draw_samples(self, nb_rows, random_state):
    method generate_mask (line 2999) | def generate_mask(cls, shape, min_value, max_value, start_at, end_at):
    method _generate_mask (line 3034) | def _generate_mask(cls, shape, axis, min_value, max_value, start_at,
  class HorizontalLinearGradientMaskGen (line 3078) | class HorizontalLinearGradientMaskGen(_LinearGradientMaskGen):
    method __init__ (line 3134) | def __init__(self, min_value=(0.0, 0.2), max_value=(0.8, 1.0),
    method generate_mask (line 3144) | def generate_mask(cls, shape, min_value, max_value, start_at, end_at):
  class VerticalLinearGradientMaskGen (line 3185) | class VerticalLinearGradientMaskGen(_LinearGradientMaskGen):
    method __init__ (line 3233) | def __init__(self, min_value=(0.0, 0.2), max_value=(0.8, 1.0),
    method generate_mask (line 3243) | def generate_mask(cls, shape, min_value, max_value, start_at, end_at):
  class RegularGridMaskGen (line 3284) | class RegularGridMaskGen(IBatchwiseMaskGenerator):
    method __init__ (line 3326) | def __init__(self, nb_rows, nb_cols, alpha=[0.0, 1.0]):
    method draw_masks (line 3340) | def draw_masks(self, batch, random_state=None):
    method _draw_samples (line 3357) | def _draw_samples(self, nb_images, random_state):
    method generate_mask (line 3372) | def generate_mask(cls, shape, nb_rows, nb_cols, alphas):
  class CheckerboardMaskGen (line 3439) | class CheckerboardMaskGen(IBatchwiseMaskGenerator):
    method __init__ (line 3468) | def __init__(self, nb_rows, nb_cols):
    method nb_rows (line 3474) | def nb_rows(self):
    method nb_cols (line 3488) | def nb_cols(self):
    method draw_masks (line 3501) | def draw_masks(self, batch, random_state=None):
    method generate_mask (line 3519) | def generate_mask(cls, shape, nb_rows, nb_cols):
  class SegMapClassIdsMaskGen (line 3556) | class SegMapClassIdsMaskGen(IBatchwiseMaskGenerator):
    method __init__ (line 3627) | def __init__(self, class_ids, nb_sample_classes=None):
    method draw_masks (line 3649) | def draw_masks(self, batch, random_state=None):
    method _draw_samples (line 3668) | def _draw_samples(self, nb_rows, random_state):
    method generate_mask (line 3689) | def generate_mask(cls, segmap, class_ids):
  class BoundingBoxesMaskGen (line 3725) | class BoundingBoxesMaskGen(IBatchwiseMaskGenerator):
    method __init__ (line 3791) | def __init__(self, labels=None, nb_sample_labels=None):
    method draw_masks (line 3813) | def draw_masks(self, batch, random_state=None):
    method _draw_samples (line 3836) | def _draw_samples(self, nb_rows, random_state):
    method generate_mask (line 3857) | def generate_mask(cls, bbsoi, labels):
  class InvertMaskGen (line 3896) | class InvertMaskGen(IBatchwiseMaskGenerator):
    method __init__ (line 3917) | def __init__(self, p, child):
    method draw_masks (line 3921) | def draw_masks(self, batch, random_state=None):
  function Alpha (line 3943) | def Alpha(factor=0, first=None, second=None, per_channel=False,
  function AlphaElementwise (line 3967) | def AlphaElementwise(factor=0, first=None, second=None, per_channel=False,
  function SimplexNoiseAlpha (line 3991) | def SimplexNoiseAlpha(first=None, second=None, per_channel=False,
  function FrequencyNoiseAlpha (line 4023) | def FrequencyNoiseAlpha(exponent=(-4, 4), first=None, second=None,

FILE: imgaug/augmenters/blur.py
  function blur_gaussian_ (line 30) | def blur_gaussian_(image, sigma, ksize=None, backend="auto", eps=1e-3):
  function _blur_gaussian_scipy_ (line 198) | def _blur_gaussian_scipy_(image, sigma, ksize):
  function _blur_gaussian_cv2 (line 242) | def _blur_gaussian_cv2(image, sigma, ksize):
  function _compute_gaussian_blur_ksize (line 298) | def _compute_gaussian_blur_ksize(sigma):
  function blur_avg_ (line 315) | def blur_avg_(image, k):
  function blur_mean_shift_ (line 424) | def blur_mean_shift_(image, spatial_window_radius, color_window_radius):
  class GaussianBlur (line 525) | class GaussianBlur(meta.Augmenter):
    method __init__ (line 580) | def __init__(self, sigma=(0.0, 3.0),
    method _augment_batch_ (line 596) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 608) | def get_parameters(self):
  class AverageBlur (line 613) | class AverageBlur(meta.Augmenter):
    method __init__ (line 704) | def __init__(self, k=(1, 7),
    method _augment_batch_ (line 762) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 785) | def get_parameters(self):
  class MedianBlur (line 790) | class MedianBlur(meta.Augmenter):
    method __init__ (line 862) | def __init__(self, k=(1, 7),
    method _augment_batch_ (line 886) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 917) | def get_parameters(self):
  class BilateralBlur (line 923) | class BilateralBlur(meta.Augmenter):
    method __init__ (line 1028) | def __init__(self, d=(1, 9), sigma_color=(10, 250), sigma_space=(10, 2...
    method _augment_batch_ (line 1047) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1077) | def get_parameters(self):
  class MotionBlur (line 1083) | class MotionBlur(iaa_convolutional.Convolve):
    method __init__ (line 1171) | def __init__(self, k=(3, 7), angle=(0, 360), direction=(-1.0, 1.0), or...
  class _MotionBlurMatrixGenerator (line 1195) | class _MotionBlurMatrixGenerator(object):
    method __init__ (line 1197) | def __init__(self, k, angle, direction, order):
    method __call__ (line 1204) | def __call__(self, _image, nb_channels, random_state):
  class MeanShiftBlur (line 1239) | class MeanShiftBlur(meta.Augmenter):
    method __init__ (line 1310) | def __init__(self, spatial_radius=(5.0, 40.0), color_radius=(5.0, 40.0),
    method _augment_batch_ (line 1326) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 1339) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 1349) | def get_parameters(self):

FILE: imgaug/augmenters/collections.py
  class RandAugment (line 23) | class RandAugment(meta.Sequential):
    method __init__ (line 188) | def __init__(self, n=2, m=(6, 12), cval=128,
    method _create_initial_augmenters_list (line 231) | def _create_initial_augmenters_list(cls, m):
    method _create_main_augmenters_list (line 252) | def _create_main_augmenters_list(cls, m, cval):
    method get_parameters (line 338) | def get_parameters(self):

FILE: imgaug/augmenters/color.py
  function _get_opencv_attr (line 65) | def _get_opencv_attr(attr_names):
  function change_colorspace_ (line 177) | def change_colorspace_(image, to_colorspace, from_colorspace=CSPACE_RGB):
  function change_colorspaces_ (line 302) | def change_colorspaces_(images, to_colorspaces, from_colorspaces=CSPACE_...
  class _KelvinToRGBTableSingleton (line 388) | class _KelvinToRGBTableSingleton(object):
    method get_instance (line 393) | def get_instance(cls):
  class _KelvinToRGBTable (line 400) | class _KelvinToRGBTable(object):
    method __init__ (line 402) | def __init__(self):
    method transform_kelvins_to_rgb_multipliers (line 405) | def transform_kelvins_to_rgb_multipliers(self, kelvins):
    method create_table (line 447) | def create_table(cls):
  function change_color_temperatures_ (line 845) | def change_color_temperatures_(images, kelvins, from_colorspaces=CSPACE_...
  function change_color_temperature (line 940) | def change_color_temperature(image, kelvin, from_colorspace=CSPACE_RGB):
  function InColorspace (line 976) | def InColorspace(to_colorspace, from_colorspace="RGB", children=None,
  class WithColorspace (line 988) | class WithColorspace(meta.Augmenter):
    method __init__ (line 1047) | def __init__(self, to_colorspace, from_colorspace=CSPACE_RGB, children...
    method _augment_batch_ (line 1059) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _to_deterministic (line 1082) | def _to_deterministic(self):
    method get_parameters (line 1089) | def get_parameters(self):
    method get_children_lists (line 1093) | def get_children_lists(self):
    method __str__ (line 1097) | def __str__(self):
  class WithBrightnessChannels (line 1106) | class WithBrightnessChannels(meta.Augmenter):
    method __init__ (line 1201) | def __init__(self, children=None,
    method _augment_batch_ (line 1224) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _extract_brightness_channels (line 1256) | def _extract_brightness_channels(self, images, colorspaces):
    method _invert_extract_brightness_channels (line 1267) | def _invert_extract_brightness_channels(self, channels, images,
    method _to_deterministic (line 1275) | def _to_deterministic(self):
    method get_parameters (line 1283) | def get_parameters(self):
    method get_children_lists (line 1288) | def get_children_lists(self):
    method __str__ (line 1293) | def __str__(self):
  class MultiplyAndAddToBrightness (line 1309) | class MultiplyAndAddToBrightness(WithBrightnessChannels):
    method __init__ (line 1370) | def __init__(self, mul=(0.7, 1.3), add=(-30, 30),
    method __str__ (line 1400) | def __str__(self):
  class MultiplyBrightness (line 1420) | class MultiplyBrightness(MultiplyAndAddToBrightness):
    method __init__ (line 1472) | def __init__(self, mul=(0.7, 1.3),
  class AddToBrightness (line 1494) | class AddToBrightness(MultiplyAndAddToBrightness):
    method __init__ (line 1546) | def __init__(self, add=(-30, 30),
  class WithHueAndSaturation (line 1572) | class WithHueAndSaturation(meta.Augmenter):
    method __init__ (line 1650) | def __init__(self, children=None, from_colorspace="RGB",
    method _augment_batch_ (line 1665) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _images_to_hsv_ (line 1678) | def _images_to_hsv_(self, images):
    method _hs_to_images_ (line 1702) | def _hs_to_images_(self, images_hs, images_hsv):
    method _to_deterministic (line 1733) | def _to_deterministic(self):
    method get_parameters (line 1740) | def get_parameters(self):
    method get_children_lists (line 1744) | def get_children_lists(self):
    method __str__ (line 1748) | def __str__(self):
  class MultiplyHueAndSaturation (line 1757) | class MultiplyHueAndSaturation(WithHueAndSaturation):
    method __init__ (line 1874) | def __init__(self, mul=None, mul_hue=None, mul_saturation=None,
  class MultiplyHue (line 1970) | class MultiplyHue(MultiplyHueAndSaturation):
    method __init__ (line 2032) | def __init__(self, mul=(-3.0, 3.0), from_colorspace="RGB",
  class MultiplySaturation (line 2042) | class MultiplySaturation(MultiplyHueAndSaturation):
    method __init__ (line 2101) | def __init__(self, mul=(0.0, 3.0), from_colorspace="RGB",
  class RemoveSaturation (line 2111) | class RemoveSaturation(MultiplySaturation):
    method __init__ (line 2180) | def __init__(self, mul=1, from_colorspace=CSPACE_RGB,
  class AddToHueAndSaturation (line 2255) | class AddToHueAndSaturation(meta.Augmenter):
    method __init__ (line 2363) | def __init__(self, value=None, value_hue=None, value_saturation=None,
    method _draw_samples (line 2387) | def _draw_samples(self, augmentables, random_state):
    method _augment_batch_ (line 2428) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _transform_image_cv2 (line 2473) | def _transform_image_cv2(cls, image_hsv, hue, saturation):
    method _transform_image_numpy (line 2501) | def _transform_image_numpy(cls, image_hsv, hue, saturation):
    method get_parameters (line 2510) | def get_parameters(self):
    method _handle_value_arg (line 2516) | def _handle_value_arg(cls, value, value_hue, value_saturation):
    method _handle_value_hue_arg (line 2533) | def _handle_value_hue_arg(cls, value_hue):
    method _handle_value_saturation_arg (line 2544) | def _handle_value_saturation_arg(cls, value_saturation):
    method _generate_lut_table (line 2554) | def _generate_lut_table(cls):
  class AddToHue (line 2572) | class AddToHue(AddToHueAndSaturation):
    method __init__ (line 2637) | def __init__(self, value=(-255, 255), from_colorspace=CSPACE_RGB,
  class AddToSaturation (line 2647) | class AddToSaturation(AddToHueAndSaturation):
    method __init__ (line 2710) | def __init__(self, value=(-75, 75), from_colorspace="RGB",
  class ChangeColorspace (line 2723) | class ChangeColorspace(meta.Augmenter):
    method __init__ (line 2842) | def __init__(self, to_colorspace, from_colorspace=CSPACE_RGB, alpha=1.0,
    method _draw_samples (line 2897) | def _draw_samples(self, n_augmentables, random_state):
    method _augment_batch_ (line 2906) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 2931) | def get_parameters(self):
  class Grayscale (line 2940) | class Grayscale(ChangeColorspace):
    method __init__ (line 3008) | def __init__(self, alpha=1, from_colorspace=CSPACE_RGB,
  class ChangeColorTemperature (line 3019) | class ChangeColorTemperature(meta.Augmenter):
    method __init__ (line 3063) | def __init__(self, kelvin=(1000, 11000), from_colorspace=CSPACE_RGB,
    method _augment_batch_ (line 3076) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 3088) | def get_parameters(self):
  class _AbstractColorQuantization (line 3094) | class _AbstractColorQuantization(meta.Augmenter):
    method __init__ (line 3095) | def __init__(self,
    method _draw_samples (line 3118) | def _draw_samples(self, n_augmentables, random_state):
    method _augment_batch_ (line 3132) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_single_image (line 3145) | def _augment_single_image(self, image, counts, random_state):
    method _quantize (line 3203) | def _quantize(self, image, counts):
    method get_parameters (line 3206) | def get_parameters(self):
    method _ensure_max_size (line 3217) | def _ensure_max_size(cls, image, max_size, interpolation):
  class KMeansColorQuantization (line 3231) | class KMeansColorQuantization(_AbstractColorQuantization):
    method __init__ (line 3364) | def __init__(self, n_colors=(2, 16), from_colorspace=CSPACE_RGB,
    method n_colors (line 3380) | def n_colors(self):
    method _quantize (line 3388) | def _quantize(self, image, counts):
  function quantize_colors_kmeans (line 3393) | def quantize_colors_kmeans(image, n_colors, n_max_iter=10, eps=1.0):
  function quantize_kmeans (line 3403) | def quantize_kmeans(arr, nb_clusters, nb_max_iter=10, eps=1.0):
  class UniformColorQuantization (line 3518) | class UniformColorQuantization(_AbstractColorQuantization):
    method __init__ (line 3643) | def __init__(self,
    method n_colors (line 3662) | def n_colors(self):
    method _quantize (line 3670) | def _quantize(self, image, counts):
  class UniformColorQuantizationToNBits (line 3674) | class UniformColorQuantizationToNBits(_AbstractColorQuantization):
    method __init__ (line 3801) | def __init__(self,
    method _quantize (line 3824) | def _quantize(self, image, counts):
  class Posterize (line 3828) | class Posterize(UniformColorQuantizationToNBits):
  function quantize_colors_uniform (line 3841) | def quantize_colors_uniform(image, n_colors):
  function quantize_uniform (line 3850) | def quantize_uniform(arr, nb_bins, to_bin_centers=True):
  function quantize_uniform_ (line 3883) | def quantize_uniform_(arr, nb_bins, to_bin_centers=True):
  class _QuantizeUniformCenterizedLUTTableSingleton (line 3966) | class _QuantizeUniformCenterizedLUTTableSingleton(object):
    method get_instance (line 3970) | def get_instance(cls):
  class _QuantizeUniformNotCenterizedLUTTableSingleton (line 3987) | class _QuantizeUniformNotCenterizedLUTTableSingleton(object):
    method get_instance (line 3992) | def get_instance(cls):
  class _QuantizeUniformLUTTable (line 4009) | class _QuantizeUniformLUTTable(object):
    method __init__ (line 4010) | def __init__(self, centerize):
    method get_for_nb_bins (line 4013) | def get_for_nb_bins(self, nb_bins):
    method _generate_quantize_uniform_table (line 4023) | def _generate_quantize_uniform_table(cls, centerize):
  function quantize_uniform_to_n_bits (line 4044) | def quantize_uniform_to_n_bits(arr, nb_bits):
  function quantize_uniform_to_n_bits_ (line 4072) | def quantize_uniform_to_n_bits_(arr, nb_bits):
  function posterize (line 4127) | def posterize(arr, nb_bits):

FILE: imgaug/augmenters/contrast.py
  class _ContrastFuncWrapper (line 32) | class _ContrastFuncWrapper(meta.Augmenter):
    method __init__ (line 33) | def __init__(self, func, params1d, per_channel, dtypes_allowed=None,
    method _augment_batch_ (line 48) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 94) | def get_parameters(self):
  function adjust_contrast_gamma (line 100) | def adjust_contrast_gamma(arr, gamma):
  function adjust_contrast_sigmoid (line 178) | def adjust_contrast_sigmoid(arr, gain, cutoff):
  function adjust_contrast_log (line 265) | def adjust_contrast_log(arr, gain):
  function adjust_contrast_linear (line 346) | def adjust_contrast_linear(arr, alpha):
  class GammaContrast (line 426) | class GammaContrast(_ContrastFuncWrapper):
    method __init__ (line 488) | def __init__(self, gamma=(0.7, 1.7), per_channel=False,
  class SigmoidContrast (line 504) | class SigmoidContrast(_ContrastFuncWrapper):
    method __init__ (line 586) | def __init__(self, gain=(5, 6), cutoff=(0.3, 0.6), per_channel=False,
  class LogContrast (line 609) | class LogContrast(_ContrastFuncWrapper):
    method __init__ (line 672) | def __init__(self, gain=(0.4, 1.6), per_channel=False,
  class LinearContrast (line 690) | class LinearContrast(_ContrastFuncWrapper):
    method __init__ (line 750) | def __init__(self, alpha=(0.6, 1.4), per_channel=False,
  class _IntensityChannelBasedApplier (line 772) | class _IntensityChannelBasedApplier(object):
    method __init__ (line 784) | def __init__(self, from_colorspace, to_colorspace):
    method apply (line 802) | def apply(self, images, random_state, parents, hooks, func):
    method get_parameters (line 897) | def get_parameters(self):
  class AllChannelsCLAHE (line 903) | class AllChannelsCLAHE(meta.Augmenter):
    method __init__ (line 994) | def __init__(self, clip_limit=(0.1, 8), tile_grid_size_px=(3, 12),
    method _augment_batch_ (line 1013) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1079) | def get_parameters(self):
  class CLAHE (line 1085) | class CLAHE(meta.Augmenter):
    method __init__ (line 1254) | def __init__(self, clip_limit=(0.1, 8), tile_grid_size_px=(3, 12),
    method _augment_batch_ (line 1274) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1298) | def get_parameters(self):
  class AllChannelsHistogramEqualization (line 1309) | class AllChannelsHistogramEqualization(meta.Augmenter):
    method __init__ (line 1373) | def __init__(self, seed=None, name=None,
    method _augment_batch_ (line 1380) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1401) | def get_parameters(self):
  class HistogramEqualization (line 1406) | class HistogramEqualization(meta.Augmenter):
    method __init__ (line 1516) | def __init__(self, from_colorspace=color_lib.CSPACE_RGB,
    method _augment_batch_ (line 1532) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1556) | def get_parameters(self):

FILE: imgaug/augmenters/convolutional.py
  function convolve (line 29) | def convolve(image, kernel):
  function convolve_ (line 58) | def convolve_(image, kernel):
  class Convolve (line 184) | class Convolve(meta.Augmenter):
    method __init__ (line 254) | def __init__(self, matrix=None,
    method _augment_batch_ (line 280) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 305) | def get_parameters(self):
  class Sharpen (line 310) | class Sharpen(Convolve):
    method __init__ (line 379) | def __init__(self, alpha=(0.0, 0.2), lightness=(0.8, 1.2),
  class _SharpeningMatrixGenerator (line 397) | class _SharpeningMatrixGenerator(object):
    method __init__ (line 398) | def __init__(self, alpha, lightness):
    method __call__ (line 402) | def __call__(self, _image, nb_channels, random_state):
  class Emboss (line 425) | class Emboss(Convolve):
    method __init__ (line 490) | def __init__(self, alpha=(0.0, 1.0), strength=(0.25, 1.0),
  class _EmbossMatrixGenerator (line 508) | class _EmbossMatrixGenerator(object):
    method __init__ (line 509) | def __init__(self, alpha, strength):
    method __call__ (line 513) | def __call__(self, _image, nb_channels, random_state):
  class EdgeDetect (line 538) | class EdgeDetect(Convolve):
    method __init__ (line 587) | def __init__(self, alpha=(0.0, 0.75),
  class _EdgeDetectMatrixGenerator (line 602) | class _EdgeDetectMatrixGenerator(object):
    method __init__ (line 603) | def __init__(self, alpha):
    method __call__ (line 606) | def __call__(self, _image, nb_channels, random_state):
  class DirectedEdgeDetect (line 634) | class DirectedEdgeDetect(Convolve):
    method __init__ (line 720) | def __init__(self, alpha=(0.0, 0.75), direction=(0.0, 1.0),
  class _DirectedEdgeDetectMatrixGenerator (line 739) | class _DirectedEdgeDetectMatrixGenerator(object):
    method __init__ (line 740) | def __init__(self, alpha, direction):
    method __call__ (line 744) | def __call__(self, _image, nb_channels, random_state):

FILE: imgaug/augmenters/debug.py
  function _resizepad_to_size (line 31) | def _resizepad_to_size(image, size, cval):
  class _IDebugGridCell (line 82) | class _IDebugGridCell(object):
    method min_width (line 92) | def min_width(self):
    method min_height (line 100) | def min_height(self):
    method draw (line 108) | def draw(self, height, width):
  class _DebugGridBorderCell (line 129) | class _DebugGridBorderCell(_IDebugGridCell):
    method __init__ (line 137) | def __init__(self, size, color, child):
    method min_height (line 144) | def min_height(self):
    method min_width (line 149) | def min_width(self):
    method draw (line 153) | def draw(self, height, width):
  class _DebugGridTextCell (line 162) | class _DebugGridTextCell(_IDebugGridCell):
    method __init__ (line 170) | def __init__(self, text):
    method min_height (line 175) | def min_height(self):
    method min_width (line 180) | def min_width(self):
    method draw (line 187) | def draw(self, height, width):
  class _DebugGridImageCell (line 194) | class _DebugGridImageCell(_IDebugGridCell):
    method __init__ (line 202) | def __init__(self, image, overlay=None, overlay_alpha=0.75):
    method min_height (line 209) | def min_height(self):
    method min_width (line 214) | def min_width(self):
    method draw (line 218) | def draw(self, height, width):
    method _resize_overlay (line 254) | def _resize_overlay(cls, arr, size):
  class _DebugGridCBAsOICell (line 259) | class _DebugGridCBAsOICell(_IDebugGridCell):
    method __init__ (line 270) | def __init__(self, cbasoi, image):
    method min_height (line 276) | def min_height(self):
    method min_width (line 281) | def min_width(self):
    method draw (line 285) | def draw(self, height, width):
  class _DebugGridColumn (line 297) | class _DebugGridColumn(object):
    method __init__ (line 304) | def __init__(self, cells):
    method nb_rows (line 308) | def nb_rows(self):
    method max_cell_width (line 317) | def max_cell_width(self):
    method max_cell_height (line 326) | def max_cell_height(self):
    method draw (line 334) | def draw(self, heights):
  class _DebugGrid (line 346) | class _DebugGrid(object):
    method __init__ (line 357) | def __init__(self, columns):
    method draw (line 361) | def draw(self):
  function draw_debug_image (line 382) | def draw_debug_image(images, heatmaps=None, segmentation_maps=None,
  function _add_borders (line 500) | def _add_borders(cells):
  function _add_text_cell (line 507) | def _add_text_cell(title, cells):
  function _create_images_column (line 513) | def _create_images_column(images):
  function _create_heatmaps_columns (line 531) | def _create_heatmaps_columns(heatmaps, images):
  function _create_segmap_columns (line 562) | def _create_segmap_columns(segmentation_maps, images):
  function _create_cbasois_column (line 597) | def _create_cbasois_column(cbasois, images, column_name):
  function _generate_images_description (line 615) | def _generate_images_description(images):
  function _generate_segmaps_description (line 675) | def _generate_segmaps_description(segmaps, channel_idx, show_details):
  function _generate_heatmaps_description (line 694) | def _generate_heatmaps_description(heatmaps, channel_idx, show_details):
  function _generate_sm_hm_description (line 712) | def _generate_sm_hm_description(augmentables, channel_idx, show_details):
  function _generate_cbasois_description (line 760) | def _generate_cbasois_description(cbasois, images):
  function _generate_on_image_shapes_descr (line 830) | def _generate_on_image_shapes_descr(augmentables):
  function _join_description_strs (line 847) | def _join_description_strs(strs):
  class _ListOfArraysStats (line 853) | class _ListOfArraysStats(object):
    method __init__ (line 862) | def __init__(self, arrays):
    method empty (line 867) | def empty(self):
    method areas (line 872) | def areas(self):
    method arrays_by_area (line 877) | def arrays_by_area(self):
    method shapes (line 886) | def shapes(self):
    method all_same_shape (line 891) | def all_same_shape(self):
    method smallest_shape (line 898) | def smallest_shape(self):
    method largest_shape (line 905) | def largest_shape(self):
    method area_max (line 912) | def area_max(self):
    method heights (line 919) | def heights(self):
    method height_min (line 924) | def height_min(self):
    method height_max (line 930) | def height_max(self):
    method widths (line 936) | def widths(self):
    method width_min (line 941) | def width_min(self):
    method width_max (line 947) | def width_max(self):
    method get_channels_min (line 952) | def get_channels_min(self, default):
    method get_channels_max (line 960) | def get_channels_max(self, default):
    method dtypes (line 969) | def dtypes(self):
    method dtype_names (line 974) | def dtype_names(self):
    method all_same_dtype (line 979) | def all_same_dtype(self):
    method all_dtypes_intlike (line 984) | def all_dtypes_intlike(self):
    method unique_dtype_names (line 991) | def unique_dtype_names(self):
    method value_min (line 996) | def value_min(self):
    method value_max (line 1001) | def value_max(self):
    method nb_unique_values (line 1006) | def nb_unique_values(self):
  class _IImageDestination (line 1015) | class _IImageDestination(object):
    method on_batch (line 1018) | def on_batch(self, batch):
    method receive (line 1032) | def receive(self, image):
  class _MultiDestination (line 1046) | class _MultiDestination(_IImageDestination):
    method __init__ (line 1050) | def __init__(self, destinations):
    method on_batch (line 1054) | def on_batch(self, batch):
    method receive (line 1059) | def receive(self, image):
  class _FolderImageDestination (line 1065) | class _FolderImageDestination(_IImageDestination):
    method __init__ (line 1069) | def __init__(self, folder_path,
    method on_batch (line 1078) | def on_batch(self, batch):
    method receive (line 1085) | def receive(self, image):
  class _IBatchwiseSchedule (line 1091) | class _IBatchwiseSchedule(object):
    method on_batch (line 1094) | def on_batch(self, batch):
  class _EveryNBatchesSchedule (line 1113) | class _EveryNBatchesSchedule(_IBatchwiseSchedule):
    method __init__ (line 1122) | def __init__(self, interval):
    method on_batch (line 1127) | def on_batch(self, batch):
  class _SaveDebugImage (line 1133) | class _SaveDebugImage(meta.Augmenter):
    method __init__ (line 1167) | def __init__(self, destination, schedule,
    method _augment_batch_ (line 1177) | def _augment_batch_(self, batch, random_state, parents, hooks):
  class SaveDebugImageEveryNBatches (line 1196) | class SaveDebugImageEveryNBatches(_SaveDebugImage):
    method __init__ (line 1253) | def __init__(self, destination, interval,
    method get_parameters (line 1272) | def get_parameters(self):

FILE: imgaug/augmenters/edges.py
  class IBinaryImageColorizer (line 32) | class IBinaryImageColorizer(object):
    method colorize (line 36) | def colorize(self, image_binary, image_original, nth_image, random_sta...
  class RandomColorsBinaryImageColorizer (line 63) | class RandomColorsBinaryImageColorizer(IBinaryImageColorizer):
    method __init__ (line 92) | def __init__(self, color_true=(0, 255), color_false=(0, 255)):
    method _draw_samples (line 109) | def _draw_samples(self, random_state):
    method colorize (line 116) | def colorize(self, image_binary, image_original, nth_image, random_sta...
    method __str__ (line 161) | def __str__(self):
  class Canny (line 167) | class Canny(meta.Augmenter):
    method __init__ (line 320) | def __init__(self,
    method _draw_samples (line 381) | def _draw_samples(self, augmentables, random_state):
    method _augment_batch_ (line 418) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 460) | def get_parameters(self):
    method __str__ (line 465) | def __str__(self):

FILE: imgaug/augmenters/flip.py
  function fliplr (line 682) | def fliplr(arr):
  function _fliplr_sliced (line 730) | def _fliplr_sliced(arr):
  function _fliplr_cv2 (line 734) | def _fliplr_cv2(arr):
  function flipud (line 767) | def flipud(arr):
  function HorizontalFlip (line 811) | def HorizontalFlip(*args, **kwargs):
  function VerticalFlip (line 817) | def VerticalFlip(*args, **kwargs):
  class Fliplr (line 823) | class Fliplr(meta.Augmenter):
    method __init__ (line 872) | def __init__(self, p=1,
    method _augment_batch_ (line 881) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 930) | def get_parameters(self):
  class Flipud (line 936) | class Flipud(meta.Augmenter):
    method __init__ (line 984) | def __init__(self, p=1,
    method _augment_batch_ (line 993) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1044) | def get_parameters(self):

FILE: imgaug/augmenters/geometric.py
  function _handle_order_arg (line 86) | def _handle_order_arg(order, backend):
  function _handle_cval_arg (line 131) | def _handle_cval_arg(cval):
  function _handle_mode_arg (line 148) | def _handle_mode_arg(mode):
  function _warp_affine_arr (line 167) | def _warp_affine_arr(arr, matrix, order=1, mode="constant", cval=0,
  function _warp_affine_arr_skimage (line 224) | def _warp_affine_arr_skimage(arr, matrix, cval, mode, order, output_shape):
  function _warp_affine_arr_cv2 (line 259) | def _warp_affine_arr_cv2(arr, matrix, cval, mode, order, output_shape):
  function _warp_affine_coords (line 331) | def _warp_affine_coords(coords, matrix):
  function _compute_affine_warp_output_shape (line 352) | def _compute_affine_warp_output_shape(matrix, input_shape):
  function apply_jigsaw (line 386) | def apply_jigsaw(arr, destinations):
  function apply_jigsaw_to_coords (line 477) | def apply_jigsaw_to_coords(coords, destinations, image_shape):
  function generate_jigsaw_destinations (line 542) | def generate_jigsaw_destinations(nb_rows, nb_cols, max_steps, seed,
  class _AffineMatrixGenerator (line 617) | class _AffineMatrixGenerator(object):
    method __init__ (line 619) | def __init__(self, matrix=None):
    method centerize (line 625) | def centerize(self, image_shape):
    method invert_centerize (line 631) | def invert_centerize(self, image_shape):
    method translate (line 637) | def translate(self, x_px, y_px):
    method scale (line 648) | def scale(self, x_frac, y_frac):
    method rotate (line 660) | def rotate(self, rad):
    method shear (line 672) | def shear(self, x_rad, y_rad):
    method _mul (line 683) | def _mul(self, matrix):
  class _AffineSamplingResult (line 687) | class _AffineSamplingResult(object):
    method __init__ (line 688) | def __init__(self, scale=None, translate=None, translate_mode="px",
    method get_affine_parameters (line 700) | def get_affine_parameters(self, idx, arr_shape, image_shape):
    method to_matrix (line 742) | def to_matrix(
    method to_matrix_cba (line 777) | def to_matrix_cba(self, idx, arr_shape, fit_output, shift_add=(0.0, 0....
    method copy (line 781) | def copy(self):
  function _is_identity_matrix (line 794) | def _is_identity_matrix(matrix, eps=1e-4):
  class Affine (line 800) | class Affine(meta.Augmenter):
    method __init__ (line 1265) | def __init__(self, scale=None, translate_percent=None, translate_px=None,
    method _handle_scale_arg (line 1320) | def _handle_scale_arg(cls, scale):
    method _handle_translate_arg (line 1340) | def _handle_translate_arg(cls, translate_px, translate_percent):
    method _handle_shear_arg (line 1404) | def _handle_shear_arg(cls, shear):
    method _augment_batch_ (line 1430) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 1480) | def _augment_images_by_samples(self, images, samples,
    method _augment_maps_by_samples (line 1529) | def _augment_maps_by_samples(self, augmentables, samples,
    method _draw_samples (line 1573) | def _draw_samples(self, nb_samples, random_state):
    method get_parameters (line 1633) | def get_parameters(self):
  class ScaleX (line 1641) | class ScaleX(Affine):
    method __init__ (line 1703) | def __init__(self, scale=(0.5, 1.5), order=1, cval=0, mode="constant",
  class ScaleY (line 1718) | class ScaleY(Affine):
    method __init__ (line 1780) | def __init__(self, scale=(0.5, 1.5), order=1, cval=0, mode="constant",
  class TranslateX (line 1796) | class TranslateX(Affine):
    method __init__ (line 1867) | def __init__(self, percent=None, px=None, order=1,
  class TranslateY (line 1887) | class TranslateY(Affine):
    method __init__ (line 1958) | def __init__(self, percent=None, px=None, order=1,
  class Rotate (line 1977) | class Rotate(Affine):
    method __init__ (line 2037) | def __init__(self, rotate=(-30, 30), order=1, cval=0, mode="constant",
  class ShearX (line 2052) | class ShearX(Affine):
    method __init__ (line 2112) | def __init__(self, shear=(-30, 30), order=1, cval=0, mode="constant",
  class ShearY (line 2127) | class ShearY(Affine):
    method __init__ (line 2187) | def __init__(self, shear=(-30, 30), order=1, cval=0, mode="constant",
  class AffineCv2 (line 2202) | class AffineCv2(meta.Augmenter):
    method __init__ (line 2500) | def __init__(self, scale=1.0, translate_percent=None, translate_px=None,
    method _augment_images (line 2675) | def _augment_images(self, images, random_state, parents, hooks):
    method _augment_images_by_samples (line 2686) | def _augment_images_by_samples(cls, images, scale_samples,
    method _augment_heatmaps (line 2778) | def _augment_heatmaps(self, heatmaps, random_state, parents, hooks):
    method _augment_segmentation_maps (line 2793) | def _augment_segmentation_maps(self, segmaps, random_state, parents, h...
    method _augment_keypoints (line 2809) | def _augment_keypoints(self, keypoints_on_images, random_state, parents,
    method _augment_polygons (line 2876) | def _augment_polygons(self, polygons_on_images, random_state, parents,
    method _augment_line_strings (line 2881) | def _augment_line_strings(self, line_strings_on_images, random_state,
    method _augment_bounding_boxes (line 2886) | def _augment_bounding_boxes(self, bounding_boxes_on_images, random_state,
    method get_parameters (line 2891) | def get_parameters(self):
    method _draw_samples (line 2896) | def _draw_samples(self, nb_samples, random_state):
  class _PiecewiseAffineSamplingResult (line 2949) | class _PiecewiseAffineSamplingResult(object):
    method __init__ (line 2950) | def __init__(self, nb_rows, nb_cols, jitter, order, cval, mode):
    method get_clipped_cval (line 2958) | def get_clipped_cval(self, idx, dtype):
  class PiecewiseAffine (line 2965) | class PiecewiseAffine(meta.Augmenter):
    method __init__ (line 3106) | def __init__(self, scale=(0.0, 0.04), nb_rows=(2, 4), nb_cols=(2, 4),
    method _augment_batch_ (line 3148) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 3186) | def _augment_images_by_samples(self, images, samples):
    method _augment_maps_by_samples (line 3230) | def _augment_maps_by_samples(self, augmentables, arr_attr_name, samples,
    method _augment_keypoints_by_samples (line 3271) | def _augment_keypoints_by_samples(self, kpsois, samples):
    method _draw_samples (line 3343) | def _draw_samples(self, nb_images, random_state):
    method _get_transformer (line 3375) | def _get_transformer(self, augmentable_shape, image_shape, nb_rows,
    method get_parameters (line 3455) | def get_parameters(self):
  class _PerspectiveTransformSamplingResult (line 3462) | class _PerspectiveTransformSamplingResult(object):
    method __init__ (line 3463) | def __init__(self, matrices, max_heights, max_widths, cvals, modes):
  class PerspectiveTransform (line 3472) | class PerspectiveTransform(meta.Augmenter):
    method __init__ (line 3646) | def __init__(self, scale=(0.0, 0.06), cval=0, mode="constant",
    method _handle_mode_arg (line 3691) | def _handle_mode_arg(cls, mode):
    method _augment_batch_ (line 3727) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 3784) | def _augment_images_by_samples(self, images, samples):
    method _augment_maps_by_samples (line 3853) | def _augment_maps_by_samples(self, augmentables, arr_attr_name,
    method _augment_keypoints_by_samples (line 3917) | def _augment_keypoints_by_samples(self, kpsois, samples_images):
    method _draw_samples (line 3947) | def _draw_samples(self, shapes, random_state):
    method _order_points (line 4064) | def _order_points(cls, pts):
    method _expand_transform (line 4089) | def _expand_transform(cls, matrix, shape):
    method get_parameters (line 4110) | def get_parameters(self):
  class ElasticTransformation (line 4119) | class ElasticTransformation(meta.Augmenter):
    method __init__ (line 4325) | def __init__(self, alpha=(1.0, 40.0), sigma=(4.0, 8.0), order=0, cval=0,
    method _handle_order_arg (line 4366) | def _handle_order_arg(cls, order):
    method _handle_mode_arg (line 4375) | def _handle_mode_arg(cls, mode):
    method _draw_samples (line 4392) | def _draw_samples(self, nb_images, random_state):
    method _augment_batch_ (line 4403) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_image_by_samples (line 4450) | def _augment_image_by_samples(self, image, row_idx, samples, dx, dy):
    method _augment_hm_or_sm_by_samples (line 4471) | def _augment_hm_or_sm_by_samples(self, augmentable, row_idx, samples,
    method _augment_kpsoi_by_samples (line 4525) | def _augment_kpsoi_by_samples(self, kpsoi, row_idx, samples, dx, dy):
    method _augment_psoi_by_samples (line 4588) | def _augment_psoi_by_samples(self, psoi, row_idx, samples, dx, dy):
    method _augment_lsoi_by_samples (line 4596) | def _augment_lsoi_by_samples(self, lsoi, row_idx, samples, dx, dy):
    method _augment_bbsoi_by_samples (line 4603) | def _augment_bbsoi_by_samples(self, bbsoi, row_idx, samples, dx, dy):
    method get_parameters (line 4609) | def get_parameters(self):
    method _map_coordinates (line 4613) | def _map_coordinates(self, image, dx, dy, order=1, cval=0, mode="const...
  class _ElasticTransformationSamplingResult (line 4848) | class _ElasticTransformationSamplingResult(object):
    method __init__ (line 4849) | def __init__(self, random_state, alphas, sigmas, orders, cvals, modes):
  class _ElasticTfShiftMapGenerator (line 4858) | class _ElasticTfShiftMapGenerator(object):
    method __init__ (line 4871) | def __init__(self):
    method generate (line 4875) | def generate(self, shapes, alphas, sigmas, random_state):
    method _flip (line 4936) | def _flip(cls, dx, dy, flips):
    method _mul_alpha (line 4950) | def _mul_alpha(cls, dx, dy, alpha):
    method _smoothen_ (line 4958) | def _smoothen_(cls, dx, dy, sigma):
    method _split_chunks (line 4970) | def _split_chunks(cls, iterable, chunk_size):
  class Rot90 (line 4975) | class Rot90(meta.Augmenter):
    method __init__ (line 5077) | def __init__(self, k=1, keep_size=True,
    method _draw_samples (line 5092) | def _draw_samples(self, nb_images, random_state):
    method _augment_batch_ (line 5096) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_arrays_by_samples (line 5125) | def _augment_arrays_by_samples(cls, arrs, ks, keep_size, resize_func):
    method _augment_maps_by_samples (line 5148) | def _augment_maps_by_samples(self, augmentables, arr_attr_name, ks):
    method _augment_keypoints_by_samples (line 5173) | def _augment_keypoints_by_samples(self, keypoints_on_images, ks):
    method get_parameters (line 5210) | def get_parameters(self):
  class WithPolarWarping (line 5216) | class WithPolarWarping(meta.Augmenter):
    method __init__ (line 5341) | def __init__(self, children,
    method _augment_batch_ (line 5350) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _convert_bbs_to_polygons_ (line 5384) | def _convert_bbs_to_polygons_(cls, batch):
    method _invert_convert_bbs_to_polygons_ (line 5418) | def _invert_convert_bbs_to_polygons_(cls, batch, inv_data):
    method _warp_images_ (line 5458) | def _warp_images_(cls, images):
    method _invert_warp_images_ (line 5463) | def _invert_warp_images_(cls, images_warped, inv_data):
    method _warp_heatmaps_ (line 5468) | def _warp_heatmaps_(cls, heatmaps):
    method _invert_warp_heatmaps_ (line 5473) | def _invert_warp_heatmaps_(cls, heatmaps_warped, inv_data):
    method _warp_segmentation_maps_ (line 5479) | def _warp_segmentation_maps_(cls, segmentation_maps):
    method _invert_warp_segmentation_maps_ (line 5484) | def _invert_warp_segmentation_maps_(cls, segmentation_maps_warped,
    method _warp_keypoints_ (line 5491) | def _warp_keypoints_(cls, kpsois):
    method _invert_warp_keypoints_ (line 5496) | def _invert_warp_keypoints_(cls, kpsois_warped, image_shapes_orig):
    method _warp_bounding_boxes_ (line 5501) | def _warp_bounding_boxes_(cls, bbsois):  # pylint: disable=useless-return
    method _invert_warp_bounding_boxes_ (line 5508) | def _invert_warp_bounding_boxes_(cls, bbsois_warped, _image_shapes_ori...
    method _warp_polygons_ (line 5515) | def _warp_polygons_(cls, psois):
    method _invert_warp_polygons_ (line 5520) | def _invert_warp_polygons_(cls, psois_warped, image_shapes_orig):
    method _warp_line_strings_ (line 5525) | def _warp_line_strings_(cls, lsois):
    method _invert_warp_line_strings_ (line 5530) | def _invert_warp_line_strings_(cls, lsois_warped, image_shapes_orig):
    method _warp_arrays (line 5535) | def _warp_arrays(cls, arrays, interpolation_nearest):
    method _invert_warp_arrays (line 5593) | def _invert_warp_arrays(cls, arrays_warped, interpolation_nearest,
    method _warp_maps_ (line 5656) | def _warp_maps_(cls, maps, arr_attr_name, interpolation_nearest):
    method _invert_warp_maps_ (line 5685) | def _invert_warp_maps_(cls, maps_warped, arr_attr_name,
    method _warp_coords (line 5712) | def _warp_coords(cls, coords, image_shapes):
    method _invert_warp_coords (line 5740) | def _invert_warp_coords(cls, coords_warped, image_shapes_after_aug,
    method _warp_cbaois_ (line 5769) | def _warp_cbaois_(cls, cbaois):
    method _invert_warp_cbaois_ (line 5788) | def _invert_warp_cbaois_(cls, cbaois_warped, image_shapes_orig):
    method _warp_shape_tuples (line 5809) | def _warp_shape_tuples(cls, shapes):
    method warpPolarCoords (line 5834) | def warpPolarCoords(cls, src, dsize, center, maxRadius, flags):
    method get_parameters (line 5886) | def get_parameters(self):
    method get_children_lists (line 5891) | def get_children_lists(self):
    method _to_deterministic (line 5896) | def _to_deterministic(self):
    method __str__ (line 5904) | def __str__(self):
  class Jigsaw (line 5913) | class Jigsaw(meta.Augmenter):
    method __init__ (line 6021) | def __init__(self, nb_rows=(3, 10), nb_cols=(3, 10), max_steps=1,
    method _augment_batch_ (line 6041) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 6114) | def _draw_samples(self, batch, random_state):
    method _resize_maps (line 6135) | def _resize_maps(cls, batch):
    method _resize_maps_single_list (line 6150) | def _resize_maps_single_list(cls, augmentables, arr_attr_name,
    method _invert_resize_maps (line 6166) | def _invert_resize_maps(cls, batch, shapes_orig):
    method _invert_resize_maps_single_list (line 6176) | def _invert_resize_maps_single_list(cls, augmentables, shapes_orig):
    method get_parameters (line 6186) | def get_parameters(self):
  class _JigsawSamples (line 6191) | class _JigsawSamples(object):
    method __init__ (line 6193) | def __init__(self, nb_rows, nb_cols, max_steps, destinations):

FILE: imgaug/augmenters/imgcorruptlike.py
  function _clipped_zoom_no_scipy_warning (line 98) | def _clipped_zoom_no_scipy_warning(img, zoom_factor):
  function _call_imgcorrupt_func (line 118) | def _call_imgcorrupt_func(fname, seed, convert_to_pil, *args, **kwargs):
  function get_corruption_names (line 210) | def get_corruption_names(subset="common"):
  function apply_gaussian_noise (line 263) | def apply_gaussian_noise(x, severity=1, seed=None):
  function apply_shot_noise (line 295) | def apply_shot_noise(x, severity=1, seed=None):
  function apply_impulse_noise (line 327) | def apply_impulse_noise(x, severity=1, seed=None):
  function apply_speckle_noise (line 359) | def apply_speckle_noise(x, severity=1, seed=None):
  function apply_gaussian_blur (line 391) | def apply_gaussian_blur(x, severity=1, seed=None):
  function apply_glass_blur (line 423) | def apply_glass_blur(x, severity=1, seed=None):
  function _apply_glass_blur_imgaug (line 457) | def _apply_glass_blur_imgaug(x, severity=1):
  function _apply_glass_blur_imgaug_loop (line 506) | def _apply_glass_blur_imgaug_loop(
  function apply_defocus_blur (line 527) | def apply_defocus_blur(x, severity=1, seed=None):
  function apply_motion_blur (line 559) | def apply_motion_blur(x, severity=1, seed=None):
  function apply_zoom_blur (line 591) | def apply_zoom_blur(x, severity=1, seed=None):
  function apply_fog (line 623) | def apply_fog(x, severity=1, seed=None):
  function apply_frost (line 655) | def apply_frost(x, severity=1, seed=None):
  function apply_snow (line 687) | def apply_snow(x, severity=1, seed=None):
  function apply_spatter (line 719) | def apply_spatter(x, severity=1, seed=None):
  function apply_contrast (line 751) | def apply_contrast(x, severity=1, seed=None):
  function apply_brightness (line 783) | def apply_brightness(x, severity=1, seed=None):
  function apply_saturate (line 815) | def apply_saturate(x, severity=1, seed=None):
  function apply_jpeg_compression (line 847) | def apply_jpeg_compression(x, severity=1, seed=None):
  function apply_pixelate (line 879) | def apply_pixelate(x, severity=1, seed=None):
  function apply_elastic_transform (line 911) | def apply_elastic_transform(image, severity=1, seed=None):
  class _ImgcorruptAugmenterBase (line 1011) | class _ImgcorruptAugmenterBase(meta.Augmenter):
    method __init__ (line 1012) | def __init__(self, func, severity=1,
    method _augment_batch_ (line 1025) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 1038) | def _draw_samples(self, nb_rows, random_state):
    method get_parameters (line 1046) | def get_parameters(self):
  class GaussianNoise (line 1051) | class GaussianNoise(_ImgcorruptAugmenterBase):
    method __init__ (line 1101) | def __init__(self, severity=(1, 5),
  class ShotNoise (line 1110) | class ShotNoise(_ImgcorruptAugmenterBase):
    method __init__ (line 1160) | def __init__(self, severity=(1, 5),
  class ImpulseNoise (line 1169) | class ImpulseNoise(_ImgcorruptAugmenterBase):
    method __init__ (line 1219) | def __init__(self, severity=(1, 5),
  class SpeckleNoise (line 1228) | class SpeckleNoise(_ImgcorruptAugmenterBase):
    method __init__ (line 1278) | def __init__(self, severity=(1, 5),
  class GaussianBlur (line 1287) | class GaussianBlur(_ImgcorruptAugmenterBase):
    method __init__ (line 1337) | def __init__(self, severity=(1, 5),
  class GlassBlur (line 1346) | class GlassBlur(_ImgcorruptAugmenterBase):
    method __init__ (line 1396) | def __init__(self, severity=(1, 5),
  class DefocusBlur (line 1405) | class DefocusBlur(_ImgcorruptAugmenterBase):
    method __init__ (line 1455) | def __init__(self, severity=(1, 5),
  class MotionBlur (line 1464) | class MotionBlur(_ImgcorruptAugmenterBase):
    method __init__ (line 1514) | def __init__(self, severity=(1, 5),
  class ZoomBlur (line 1523) | class ZoomBlur(_ImgcorruptAugmenterBase):
    method __init__ (line 1573) | def __init__(self, severity=(1, 5),
  class Fog (line 1582) | class Fog(_ImgcorruptAugmenterBase):
    method __init__ (line 1632) | def __init__(self, severity=(1, 5),
  class Frost (line 1641) | class Frost(_ImgcorruptAugmenterBase):
    method __init__ (line 1691) | def __init__(self, severity=(1, 5),
  class Snow (line 1700) | class Snow(_ImgcorruptAugmenterBase):
    method __init__ (line 1750) | def __init__(self, severity=(1, 5),
  class Spatter (line 1759) | class Spatter(_ImgcorruptAugmenterBase):
    method __init__ (line 1809) | def __init__(self, severity=(1, 5),
  class Contrast (line 1818) | class Contrast(_ImgcorruptAugmenterBase):
    method __init__ (line 1868) | def __init__(self, severity=(1, 5),
  class Brightness (line 1877) | class Brightness(_ImgcorruptAugmenterBase):
    method __init__ (line 1927) | def __init__(self, severity=(1, 5),
  class Saturate (line 1936) | class Saturate(_ImgcorruptAugmenterBase):
    method __init__ (line 1986) | def __init__(self, severity=(1, 5),
  class JpegCompression (line 1995) | class JpegCompression(_ImgcorruptAugmenterBase):
    method __init__ (line 2045) | def __init__(self, severity=(1, 5),
  class Pixelate (line 2054) | class Pixelate(_ImgcorruptAugmenterBase):
    method __init__ (line 2104) | def __init__(self, severity=(1, 5),
  class ElasticTransform (line 2113) | class ElasticTransform(_ImgcorruptAugmenterBase):
    method __init__ (line 2167) | def __init__(self, severity=(1, 5),
    method _augment_batch_ (line 2176) | def _augment_batch_(self, batch, random_state, parents, hooks):

FILE: imgaug/augmenters/meta.py
  function clip_augmented_image_ (line 45) | def clip_augmented_image_(image, min_value, max_value):
  function clip_augmented_image (line 51) | def clip_augmented_image(image, min_value, max_value):
  function clip_augmented_images_ (line 57) | def clip_augmented_images_(images, min_value, max_value):
  function clip_augmented_images (line 66) | def clip_augmented_images(images, min_value, max_value):
  function handle_children_list (line 75) | def handle_children_list(lst, augmenter_name, lst_name, default="sequent...
  function reduce_to_nonempty (line 106) | def reduce_to_nonempty(objs):
  function invert_reduce_to_nonempty (line 120) | def invert_reduce_to_nonempty(objs, ids, objs_reduced):
  function estimate_max_number_of_channels (line 128) | def estimate_max_number_of_channels(images):
  function copy_arrays (line 145) | def copy_arrays(arrays):
  function _add_channel_axis (line 152) | def _add_channel_axis(arrs):
  function _remove_added_channel_axis (line 165) | def _remove_added_channel_axis(arrs_added, arrs_orig):
  class _maybe_deterministic_ctx (line 182) | class _maybe_deterministic_ctx(object):  # pylint: disable=invalid-name
    method __init__ (line 201) | def __init__(self, random_state, deterministic=None):
    method __enter__ (line 213) | def __enter__(self):
    method __exit__ (line 217) | def __exit__(self, exception_type, exception_value, exception_traceback):
  class Augmenter (line 223) | class Augmenter(object):
    method __init__ (line 284) | def __init__(self, seed=None, name=None,
    method augment_batches (line 327) | def augment_batches(self, batches, hooks=None, background=False):
    method augment_batch (line 541) | def augment_batch(self, batch, hooks=None):
    method augment_batch_ (line 553) | def augment_batch_(self, batch, parents=None, hooks=None):
    method _augment_batch_ (line 675) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method augment_image (line 743) | def augment_image(self, image, hooks=None):
    method augment_images (line 777) | def augment_images(self, images, parents=None, hooks=None):
    method _augment_images (line 832) | def _augment_images(self, images, random_state, parents, hooks):
    method augment_heatmaps (line 880) | def augment_heatmaps(self, heatmaps, parents=None, hooks=None):
    method _augment_heatmaps (line 909) | def _augment_heatmaps(self, heatmaps, random_state, parents, hooks):
    method augment_segmentation_maps (line 946) | def augment_segmentation_maps(self, segmaps, parents=None, hooks=None):
    method _augment_segmentation_maps (line 976) | def _augment_segmentation_maps(self, segmaps, random_state, parents, h...
    method augment_keypoints (line 1016) | def augment_keypoints(self, keypoints_on_images, parents=None, hooks=N...
    method _augment_keypoints (line 1081) | def _augment_keypoints(self, keypoints_on_images, random_state, parents,
    method augment_bounding_boxes (line 1122) | def augment_bounding_boxes(self, bounding_boxes_on_images, parents=None,
    method augment_polygons (line 1190) | def augment_polygons(self, polygons_on_images, parents=None, hooks=None):
    method augment_line_strings (line 1256) | def augment_line_strings(self, line_strings_on_images, parents=None,
    method _augment_bounding_boxes (line 1325) | def _augment_bounding_boxes(self, bounding_boxes_on_images, random_state,
    method _augment_polygons (line 1375) | def _augment_polygons(self, polygons_on_images, random_state, parents,
    method _augment_line_strings (line 1422) | def _augment_line_strings(self, line_strings_on_images, random_state,
    method _augment_bounding_boxes_as_keypoints (line 1470) | def _augment_bounding_boxes_as_keypoints(self, bounding_boxes_on_images,
    method _augment_polygons_as_keypoints (line 1503) | def _augment_polygons_as_keypoints(self, polygons_on_images, random_st...
    method _augment_line_strings_as_keypoints (line 1551) | def _augment_line_strings_as_keypoints(self, line_strings_on_images,
    method _augment_cbaois_as_keypoints (line 1582) | def _augment_cbaois_as_keypoints(
    method _apply_to_polygons_as_keypoints (line 1618) | def _apply_to_polygons_as_keypoints(cls, polygons_on_images, func,
    method _apply_to_cbaois_as_keypoints (line 1678) | def _apply_to_cbaois_as_keypoints(cls, cbaois, func):
    method augment (line 1708) | def augment(self, return_batch=False, hooks=None, **kwargs):
    method __call__ (line 2025) | def __call__(self, *args, **kwargs):
    method pool (line 2029) | def pool(self, processes=None, maxtasksperchild=None, seed=None):
    method draw_grid (line 2113) | def draw_grid(self, images, rows, cols):
    method show_grid (line 2209) | def show_grid(self, images, rows, cols):
    method to_deterministic (line 2235) | def to_deterministic(self, n=None):
    method _to_deterministic (line 2277) | def _to_deterministic(self):
    method reseed (line 2309) | def reseed(self, random_state=None, deterministic_too=False):
    method seed_ (line 2318) | def seed_(self, entropy=None, deterministic_too=False):
    method localize_random_state (line 2395) | def localize_random_state(self, recursive=True):
    method localize_random_state_ (line 2419) | def localize_random_state_(self, recursive=True):
    method copy_random_state (line 2471) | def copy_random_state(self, source, recursive=True, matching="position",
    method copy_random_state_ (line 2508) | def copy_random_state_(self, source, recursive=True, matching="position",
    method get_parameters (line 2635) | def get_parameters(self):
    method get_children_lists (line 2648) | def get_children_lists(self):
    method get_all_children (line 2689) | def get_all_children(self, flat=False):
    method find_augmenters (line 2717) | def find_augmenters(self, func, parents=None, flat=True):
    method find_augmenters_by_name (line 2778) | def find_augmenters_by_name(self, name, regex=False, flat=True):
    method find_augmenters_by_names (line 2801) | def find_augmenters_by_names(self, names, regex=False, flat=True):
    method remove_augmenters (line 2837) | def remove_augmenters(self, func, copy=True, identity_if_topmost=True,
    method remove_augmenters_inplace (line 2910) | def remove_augmenters_inplace(self, func, parents=None):
    method remove_augmenters_ (line 2920) | def remove_augmenters_(self, func, parents=None):
    method copy (line 2968) | def copy(self):
    method deepcopy (line 2979) | def deepcopy(self):
    method __repr__ (line 2996) | def __repr__(self):
    method __str__ (line 2999) | def __str__(self):
  class Sequential (line 3006) | class Sequential(Augmenter, list):
    method __init__ (line 3104) | def __init__(self, children=None, random_order=False,
    method _augment_batch_ (line 3135) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _to_deterministic (line 3150) | def _to_deterministic(self):
    method get_parameters (line 3158) | def get_parameters(self):
    method add (line 3162) | def add(self, augmenter):
    method get_children_lists (line 3173) | def get_children_lists(self):
    method __str__ (line 3177) | def __str__(self):
  class SomeOf (line 3188) | class SomeOf(Augmenter, list):
    method __init__ (line 3303) | def __init__(self, n=None, children=None, random_order=False,
    method _handle_arg_n (line 3337) | def _handle_arg_n(cls, n):
    method _get_n (line 3364) | def _get_n(self, nb_images, random_state):
    method _get_augmenter_order (line 3376) | def _get_augmenter_order(self, random_state):
    method _get_augmenter_active (line 3383) | def _get_augmenter_active(self, nb_rows, random_state):
    method _augment_batch_ (line 3396) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _to_deterministic (line 3432) | def _to_deterministic(self):
    method get_parameters (line 3440) | def get_parameters(self):
    method add (line 3444) | def add(self, augmenter):
    method get_children_lists (line 3455) | def get_children_lists(self):
    method __str__ (line 3459) | def __str__(self):
  class OneOf (line 3470) | class OneOf(SomeOf):
    method __init__ (line 3528) | def __init__(self, children,
  class Sometimes (line 3539) | class Sometimes(Augmenter):
    method __init__ (line 3615) | def __init__(self, p=0.5, then_list=None, else_list=None,
    method _augment_batch_ (line 3630) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _to_deterministic (line 3662) | def _to_deterministic(self):
    method get_parameters (line 3674) | def get_parameters(self):
    method get_children_lists (line 3678) | def get_children_lists(self):
    method __str__ (line 3687) | def __str__(self):
  class WithChannels (line 3697) | class WithChannels(Augmenter):
    method __init__ (line 3762) | def __init__(self, channels=None, children=None,
    method _augment_batch_ (line 3788) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _assert_lengths_not_changed (line 3834) | def _assert_lengths_not_changed(cls, images_aug, images):
    method _assert_shapes_not_changed (line 3842) | def _assert_shapes_not_changed(cls, images_aug, images):
    method _assert_dtypes_not_changed (line 3859) | def _assert_dtypes_not_changed(cls, images_aug, images):
    method _recover_images_array (line 3878) | def _recover_images_array(cls, images_aug, images):
    method _reduce_images_to_channels (line 3884) | def _reduce_images_to_channels(self, images):
    method _invert_reduce_images_to_channels (line 3892) | def _invert_reduce_images_to_channels(self, images_aug, images):
    method _replace_unaugmented_cells (line 3901) | def _replace_unaugmented_cells(self, augmentables_aug, augmentables):
    method _to_deterministic (line 3920) | def _to_deterministic(self):
    method get_parameters (line 3927) | def get_parameters(self):
    method get_children_lists (line 3931) | def get_children_lists(self):
    method __str__ (line 3935) | def __str__(self):
  class Identity (line 3944) | class Identity(Augmenter):
    method __init__ (line 3997) | def __init__(self,
    method _augment_batch_ (line 4005) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 4009) | def get_parameters(self):
  class Noop (line 4014) | class Noop(Identity):
    method __init__ (line 4052) | def __init__(self,
  class Lambda (line 4060) | class Lambda(Augmenter):
    method __init__ (line 4236) | def __init__(self, func_images=None, func_heatmaps=None,
    method _augment_images (line 4253) | def _augment_images(self, images, random_state, parents, hooks):
    method _augment_heatmaps (line 4258) | def _augment_heatmaps(self, heatmaps, random_state, parents, hooks):
    method _augment_segmentation_maps (line 4274) | def _augment_segmentation_maps(self, segmaps, random_state, parents, h...
    method _augment_keypoints (line 4291) | def _augment_keypoints(self, keypoints_on_images, random_state, parents,
    method _augment_polygons (line 4309) | def _augment_polygons(self, polygons_on_images, random_state, parents,
    method _augment_line_strings (line 4334) | def _augment_line_strings(self, line_strings_on_images, random_state,
    method _augment_bounding_boxes (line 4356) | def _augment_bounding_boxes(self, bounding_boxes_on_images, random_state,
    method get_parameters (line 4385) | def get_parameters(self):
  class AssertLambda (line 4390) | class AssertLambda(Lambda):
    method __init__ (line 4511) | def __init__(self, func_images=None, func_heatmaps=None,
  class _AssertLambdaCallback (line 4538) | class _AssertLambdaCallback(object):
    method __init__ (line 4540) | def __init__(self, func, augmentable_name):
    method __call__ (line 4545) | def __call__(self, augmentables, random_state, parents, hooks):
  class AssertShape (line 4555) | class AssertShape(Lambda):
    method __init__ (line 4683) | def __init__(self, shape, check_images=True, check_heatmaps=True,
    method _compare (line 4716) | def _compare(cls, observed, expected, dimension, image_index):
    method _check_shapes (line 4744) | def _check_shapes(cls, shapes, shape_target):
  class _AssertShapeImagesCheck (line 4759) | class _AssertShapeImagesCheck(object):
    method __init__ (line 4760) | def __init__(self, shape):
    method __call__ (line 4763) | def __call__(self, images, _random_state, _parents, _hooks):
  class _AssertShapeHeatmapsCheck (line 4772) | class _AssertShapeHeatmapsCheck(object):
    method __init__ (line 4773) | def __init__(self, shape):
    method __call__ (line 4776) | def __call__(self, heatmaps, _random_state, _parents, _hooks):
  class _AssertShapeSegmapCheck (line 4783) | class _AssertShapeSegmapCheck(object):
    method __init__ (line 4784) | def __init__(self, shape):
    method __call__ (line 4787) | def __call__(self, segmaps, _random_state, _parents, _hooks):
  class _AssertShapeKeypointsCheck (line 4794) | class _AssertShapeKeypointsCheck(object):
    method __init__ (line 4795) | def __init__(self, shape):
    method __call__ (line 4798) | def __call__(self, keypoints_on_images, _random_state, _parents, _hooks):
  class _AssertShapeBoundingBoxesCheck (line 4805) | class _AssertShapeBoundingBoxesCheck(object):
    method __init__ (line 4806) | def __init__(self, shape):
    method __call__ (line 4809) | def __call__(self, bounding_boxes_on_images, _random_state, _parents,
  class _AssertShapePolygonsCheck (line 4818) | class _AssertShapePolygonsCheck(object):
    method __init__ (line 4819) | def __init__(self, shape):
    method __call__ (line 4822) | def __call__(self, polygons_on_images, _random_state, _parents, _hooks):
  class _AssertShapeLineStringsCheck (line 4829) | class _AssertShapeLineStringsCheck(object):
    method __init__ (line 4830) | def __init__(self, shape):
    method __call__ (line 4833) | def __call__(self, line_strings_on_images, _random_state, _parents,
  class ChannelShuffle (line 4841) | class ChannelShuffle(Augmenter):
    method __init__ (line 4909) | def __init__(self, p=1.0, channels=None,
    method _augment_batch_ (line 4929) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 4944) | def get_parameters(self):
  function shuffle_channels (line 4949) | def shuffle_channels(image, random_state, channels=None):
  class RemoveCBAsByOutOfImageFraction (line 5015) | class RemoveCBAsByOutOfImageFraction(Augmenter):
    method __init__ (line 5105) | def __init__(self, fraction,
    method _augment_batch_ (line 5115) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 5126) | def get_parameters(self):
  class ClipCBAsToImagePlanes (line 5131) | class ClipCBAsToImagePlanes(Augmenter):
    method __init__ (line 5193) | def __init__(self,
    method _augment_batch_ (line 5201) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 5211) | def get_parameters(self):

FILE: imgaug/augmenters/overlay.py
  function blend_alpha (line 21) | def blend_alpha(*args, **kwargs):
  function Alpha (line 29) | def Alpha(*args, **kwargs):
  function AlphaElementwise (line 37) | def AlphaElementwise(*args, **kwargs):
  function SimplexNoiseAlpha (line 45) | def SimplexNoiseAlpha(*args, **kwargs):
  function FrequencyNoiseAlpha (line 53) | def FrequencyNoiseAlpha(*args, **kwargs):

FILE: imgaug/augmenters/pillike.py
  function _ensure_valid_shape (line 80) | def _ensure_valid_shape(image, func_name):
  function solarize_ (line 94) | def solarize_(image, threshold=128):
  function solarize (line 126) | def solarize(image, threshold=128):
  function posterize_ (line 155) | def posterize_(image, bits):
  function posterize (line 186) | def posterize(image, bits):
  function equalize (line 215) | def equalize(image, mask=None):
  function equalize_ (line 253) | def equalize_(image, mask=None):
  function _equalize_no_pil_ (line 320) | def _equalize_no_pil_(image, mask=None):
  function _equalize_pil_ (line 352) | def _equalize_pil_(image, mask=None):
  function autocontrast (line 366) | def autocontrast(image, cutoff=0, ignore=None):
  function _autocontrast_pil (line 429) | def _autocontrast_pil(image, cutoff, ignore):
  function _autocontrast_no_pil (line 443) | def _autocontrast_no_pil(image, cutoff, ignore):  # noqa: C901
  function _apply_enhance_func (line 534) | def _apply_enhance_func(image, cls, factor):
  function enhance_color (line 554) | def enhance_color(image, factor):
  function enhance_contrast (line 597) | def enhance_contrast(image, factor):
  function enhance_brightness (line 641) | def enhance_brightness(image, factor):
  function enhance_sharpness (line 684) | def enhance_sharpness(image, factor):
  function _filter_by_kernel (line 728) | def _filter_by_kernel(image, kernel):
  function filter_blur (line 748) | def filter_blur(image):
  function filter_smooth (line 785) | def filter_smooth(image):
  function filter_smooth_more (line 822) | def filter_smooth_more(image):
  function filter_edge_enhance (line 859) | def filter_edge_enhance(image):
  function filter_edge_enhance_more (line 896) | def filter_edge_enhance_more(image):
  function filter_find_edges (line 934) | def filter_find_edges(image):
  function filter_contour (line 971) | def filter_contour(image):
  function filter_emboss (line 1008) | def filter_emboss(image):
  function filter_sharpen (line 1045) | def filter_sharpen(image):
  function filter_detail (line 1082) | def filter_detail(image):
  function _create_affine_matrix (line 1122) | def _create_affine_matrix(scale_x=1.0, scale_y=1.0,
  function warp_affine (line 1150) | def warp_affine(image,
  class Solarize (line 1277) | class Solarize(arithmetic.Invert):
    method __init__ (line 1326) | def __init__(self, p=1.0, threshold=128,
  class Posterize (line 1337) | class Posterize(colorlib.Posterize):
  class Equalize (line 1357) | class Equalize(meta.Augmenter):
    method __init__ (line 1397) | def __init__(self,
    method _augment_batch_ (line 1405) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1413) | def get_parameters(self):
  class Autocontrast (line 1418) | class Autocontrast(contrastlib._ContrastFuncWrapper):
    method __init__ (line 1486) | def __init__(self, cutoff=(0, 20), per_channel=False,
  class _EnhanceBase (line 1508) | class _EnhanceBase(meta.Augmenter):
    method __init__ (line 1510) | def __init__(self, func, factor, factor_value_range,
    method _augment_batch_ (line 1522) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _draw_samples (line 1532) | def _draw_samples(self, nb_rows, random_state):
    method get_parameters (line 1536) | def get_parameters(self):
  class EnhanceColor (line 1541) | class EnhanceColor(_EnhanceBase):
    method __init__ (line 1595) | def __init__(self, factor=(0.0, 3.0),
  class EnhanceContrast (line 1606) | class EnhanceContrast(_EnhanceBase):
    method __init__ (line 1661) | def __init__(self, factor=(0.5, 1.5),
  class EnhanceBrightness (line 1672) | class EnhanceBrightness(_EnhanceBase):
    method __init__ (line 1727) | def __init__(self, factor=(0.5, 1.5),
  class EnhanceSharpness (line 1738) | class EnhanceSharpness(_EnhanceBase):
    method __init__ (line 1793) | def __init__(self, factor=(0.0, 2.0),
  class _FilterBase (line 1805) | class _FilterBase(meta.Augmenter):
    method __init__ (line 1807) | def __init__(self, func,
    method _augment_batch_ (line 1816) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 1823) | def get_parameters(self):
  class FilterBlur (line 1828) | class FilterBlur(_FilterBase):
    method __init__ (line 1869) | def __init__(self,
  class FilterSmooth (line 1878) | class FilterSmooth(_FilterBase):
    method __init__ (line 1919) | def __init__(self,
  class FilterSmoothMore (line 1928) | class FilterSmoothMore(_FilterBase):
    method __init__ (line 1970) | def __init__(self,
  class FilterEdgeEnhance (line 1979) | class FilterEdgeEnhance(_FilterBase):
    method __init__ (line 2022) | def __init__(self,
  class FilterEdgeEnhanceMore (line 2031) | class FilterEdgeEnhanceMore(_FilterBase):
    method __init__ (line 2074) | def __init__(self,
  class FilterFindEdges (line 2083) | class FilterFindEdges(_FilterBase):
    method __init__ (line 2125) | def __init__(self,
  class FilterContour (line 2134) | class FilterContour(_FilterBase):
    method __init__ (line 2176) | def __init__(self,
  class FilterEmboss (line 2185) | class FilterEmboss(_FilterBase):
    method __init__ (line 2226) | def __init__(self,
  class FilterSharpen (line 2235) | class FilterSharpen(_FilterBase):
    method __init__ (line 2276) | def __init__(self,
  class FilterDetail (line 2285) | class FilterDetail(_FilterBase):
    method __init__ (line 2327) | def __init__(self,
  class Affine (line 2336) | class Affine(geometric.Affine):
    method __init__ (line 2440) | def __init__(self, scale=1.0, translate_percent=None, translate_px=None,
    method _augment_batch_ (line 2461) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 2472) | def _augment_images_by_samples(self, images, samples,
    method _draw_samples (line 2502) | def _draw_samples(self, nb_samples, random_state):
    method get_parameters (line 2525) | def get_parameters(self):

FILE: imgaug/augmenters/pooling.py
  function _compute_shape_after_pooling (line 25) | def _compute_shape_after_pooling(image_shape, ksize_h, ksize_w):
  class _AbstractPoolingBase (line 43) | class _AbstractPoolingBase(meta.Augmenter):
    method __init__ (line 46) | def __init__(self, kernel_size, keep_size=True,
    method _pool_image (line 62) | def _pool_image(self, image, kernel_size_h, kernel_size_w):
    method _draw_samples (line 65) | def _draw_samples(self, nb_rows, random_state):
    method _augment_batch_ (line 82) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 95) | def _augment_images_by_samples(self, images, samples):
    method _augment_heatmaps_by_samples (line 114) | def _augment_heatmaps_by_samples(self, heatmaps, samples):
    method _augment_segmentation_maps_by_samples (line 119) | def _augment_segmentation_maps_by_samples(self, segmaps, samples):
    method _augment_hms_and_segmaps_by_samples (line 124) | def _augment_hms_and_segmaps_by_samples(self, augmentables, samples,
    method _augment_keypoints_by_samples (line 153) | def _augment_keypoints_by_samples(self, keypoints_on_images, samples):
    method _augment_polygons_by_samples (line 171) | def _augment_polygons_by_samples(self, polygons_on_images, samples):
    method _augment_line_strings_by_samples (line 178) | def _augment_line_strings_by_samples(self, line_strings_on_images, sam...
    method _augment_bounding_boxes_by_samples (line 184) | def _augment_bounding_boxes_by_samples(self, bounding_boxes_on_images,
    method get_parameters (line 191) | def get_parameters(self):
  class AveragePooling (line 199) | class AveragePooling(_AbstractPoolingBase):
    method __init__ (line 309) | def __init__(self, kernel_size=(1, 5), keep_size=True,
    method _pool_image (line 317) | def _pool_image(self, image, kernel_size_h, kernel_size_w):
  class MaxPooling (line 324) | class MaxPooling(_AbstractPoolingBase):
    method __init__ (line 430) | def __init__(self, kernel_size=(1, 5), keep_size=True,
    method _pool_image (line 438) | def _pool_image(self, image, kernel_size_h, kernel_size_w):
  class MinPooling (line 445) | class MinPooling(_AbstractPoolingBase):
    method __init__ (line 551) | def __init__(self, kernel_size=(1, 5), keep_size=True,
    method _pool_image (line 559) | def _pool_image(self, image, kernel_size_h, kernel_size_w):
  class MedianPooling (line 566) | class MedianPooling(_AbstractPoolingBase):
    method __init__ (line 672) | def __init__(self, kernel_size=(1, 5), keep_size=True,
    method _pool_image (line 680) | def _pool_image(self, image, kernel_size_h, kernel_size_w):

FILE: imgaug/augmenters/segmentation.py
  function _ensure_image_max_size (line 41) | def _ensure_image_max_size(image, max_size, interpolation):
  class Superpixels (line 77) | class Superpixels(meta.Augmenter):
    method __init__ (line 215) | def __init__(self, p_replace=(0.5, 1.0), n_segments=(50, 120),
    method _augment_batch_ (line 232) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 307) | def get_parameters(self):
  function replace_segments_ (line 317) | def replace_segments_(image, segments, replace_flags):
  function _replace_segments_np_ (line 397) | def _replace_segments_np_(image, segments, replace_flags, _nb_segments):
  function _replace_segments_numba_dispatcher_ (line 410) | def _replace_segments_numba_dispatcher_(
  function _replace_segments_numba_collect_avg_colors (line 433) | def _replace_segments_numba_collect_avg_colors(
  function _replace_segments_numba_apply_avg_cols_ (line 466) | def _replace_segments_numba_apply_avg_cols_(
  function segment_voronoi (line 482) | def segment_voronoi(image, cell_coordinates, replace_mask=None):
  function _match_pixels_with_voronoi_cells (line 559) | def _match_pixels_with_voronoi_cells(height, width, cell_coordinates):
  function _generate_pixel_coords (line 569) | def _generate_pixel_coords(height, width):
  class Voronoi (line 578) | class Voronoi(meta.Augmenter):
    method __init__ (line 703) | def __init__(self, points_sampler, p_replace=1.0, max_size=128,
    method _augment_batch_ (line 723) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_single_image (line 736) | def _augment_single_image(self, image, random_state):
    method get_parameters (line 756) | def get_parameters(self):
  class UniformVoronoi (line 762) | class UniformVoronoi(Voronoi):
    method __init__ (line 872) | def __init__(self, n_points=(50, 500), p_replace=(0.5, 1.0), max_size=...
  class RegularGridVoronoi (line 885) | class RegularGridVoronoi(Voronoi):
    method __init__ (line 1035) | def __init__(self, n_rows=(10, 30), n_cols=(10, 30),
  class RelativeRegularGridVoronoi (line 1052) | class RelativeRegularGridVoronoi(Voronoi):
    method __init__ (line 1217) | def __init__(self, n_rows_frac=(0.05, 0.15), n_cols_frac=(0.05, 0.15),
  class IPointsSampler (line 1235) | class IPointsSampler(object):
    method sample_points (line 1245) | def sample_points(self, images, random_state):
  function _verify_sample_points_images (line 1273) | def _verify_sample_points_images(images):
  class RegularGridPointsSampler (line 1293) | class RegularGridPointsSampler(IPointsSampler):
    method __init__ (line 1344) | def __init__(self, n_rows, n_cols):
    method sample_points (line 1352) | def sample_points(self, images, random_state):
    method _draw_samples (line 1359) | def _draw_samples(self, images, random_state):
    method _clip_rows_and_cols (line 1366) | def _clip_rows_and_cols(cls, n_rows_lst, n_cols_lst, images):
    method _generate_point_grids (line 1382) | def _generate_point_grids(cls, images, n_rows_lst, n_cols_lst):
    method _generate_point_grid (line 1389) | def _generate_point_grid(cls, image, n_rows, n_cols):
    method __repr__ (line 1415) | def __repr__(self):
    method __str__ (line 1418) | def __str__(self):
  class RelativeRegularGridPointsSampler (line 1422) | class RelativeRegularGridPointsSampler(IPointsSampler):
    method __init__ (line 1476) | def __init__(self, n_rows_frac, n_cols_frac):
    method sample_points (line 1485) | def sample_points(self, images, random_state):
    method _draw_samples (line 1494) | def _draw_samples(self, images, random_state):
    method __repr__ (line 1512) | def __repr__(self):
    method __str__ (line 1516) | def __str__(self):
  class DropoutPointsSampler (line 1520) | class DropoutPointsSampler(IPointsSampler):
    method __init__ (line 1562) | def __init__(self, other_points_sampler, p_drop):
    method _convert_p_drop_to_inverted_mask_param (line 1571) | def _convert_p_drop_to_inverted_mask_param(cls, p_drop):
    method sample_points (line 1597) | def sample_points(self, images, random_state):
    method _draw_samples (line 1607) | def _draw_samples(self, points_on_images, random_state):
    method _draw_samples_for_image (line 1614) | def _draw_samples_for_image(self, points_on_image, random_state):
    method _apply_dropout_masks (line 1621) | def _apply_dropout_masks(cls, points_on_images, keep_masks):
    method __repr__ (line 1640) | def __repr__(self):
    method __str__ (line 1644) | def __str__(self):
  class UniformPointsSampler (line 1648) | class UniformPointsSampler(IPointsSampler):
    method __init__ (line 1679) | def __init__(self, n_points):
    method sample_points (line 1684) | def sample_points(self, images, random_state):
    method _draw_samples (line 1699) | def _draw_samples(self, n_augmentables, random_state):
    method _convert_relative_coords_to_absolute (line 1706) | def _convert_relative_coords_to_absolute(cls, coords_rel_xy,
    method __repr__ (line 1722) | def __repr__(self):
    method __str__ (line 1725) | def __str__(self):
  class SubsamplingPointsSampler (line 1729) | class SubsamplingPointsSampler(IPointsSampler):
    method __init__ (line 1763) | def __init__(self, other_points_sampler, n_points_max):
    method sample_points (line 1775) | def sample_points(self, images, random_state):
    method _subsample (line 1787) | def _subsample(cls, points_on_image, n_points_max, random_state):
    method __repr__ (line 1794) | def __repr__(self):
    method __str__ (line 1798) | def __str__(self):

FILE: imgaug/augmenters/size.py
  function _crop_trbl_to_xyxy (line 48) | def _crop_trbl_to_xyxy(shape, top, right, bottom, left, prevent_zero_siz...
  function _crop_arr_ (line 70) | def _crop_arr_(arr, top, right, bottom, left, prevent_zero_size=True):
  function _crop_and_pad_arr (line 76) | def _crop_and_pad_arr(arr, croppings, paddings, pad_mode="constant",
  function _crop_and_pad_heatmap_ (line 94) | def _crop_and_pad_heatmap_(heatmap, croppings_img, paddings_img,
  function _crop_and_pad_segmap_ (line 101) | def _crop_and_pad_segmap_(segmap, croppings_img, paddings_img,
  function _crop_and_pad_hms_or_segmaps_ (line 108) | def _crop_and_pad_hms_or_segmaps_(augmentable, croppings_img,
  function _crop_and_pad_kpsoi_ (line 152) | def _crop_and_pad_kpsoi_(kpsoi, croppings_img, paddings_img, keep_size):
  function _compute_shape_after_crop_and_pad (line 171) | def _compute_shape_after_crop_and_pad(old_shape, croppings, paddings):
  function _prevent_zero_size_after_crop_trbl_ (line 179) | def _prevent_zero_size_after_crop_trbl_(height, width, crop_trbl):
  function _prevent_zero_size_after_crop_ (line 194) | def _prevent_zero_size_after_crop_(axis_size, crop_start, crop_end):
  function _prevent_zero_sizes_after_crops_ (line 205) | def _prevent_zero_sizes_after_crops_(axis_sizes, crops_start, crops_end):
  function _project_size_changes (line 230) | def _project_size_changes(trbl, from_shape, to_shape):
  function _int_r (line 262) | def _int_r(value):
  function _handle_pad_mode_param (line 268) | def _handle_pad_mode_param(pad_mode):
  function _handle_position_parameter (line 292) | def _handle_position_parameter(position):
  function _assert_two_or_three_dims (line 355) | def _assert_two_or_three_dims(shape):
  function pad (line 363) | def pad(arr, top=0, right=0, bottom=0, left=0, mode="constant", cval=0):
  function pad_to_aspect_ratio (line 571) | def pad_to_aspect_ratio(arr, aspect_ratio, mode="constant", cval=0,
  function pad_to_multiples_of (line 639) | def pad_to_multiples_of(arr, height_multiple, width_multiple, mode="cons...
  function compute_paddings_to_reach_aspect_ratio (line 713) | def compute_paddings_to_reach_aspect_ratio(arr, aspect_ratio):
  function compute_croppings_to_reach_aspect_ratio (line 784) | def compute_croppings_to_reach_aspect_ratio(arr, aspect_ratio):
  function compute_paddings_to_reach_multiples_of (line 856) | def compute_paddings_to_reach_multiples_of(arr, height_multiple,
  function compute_croppings_to_reach_multiples_of (line 920) | def compute_croppings_to_reach_multiples_of(arr, height_multiple,
  function compute_paddings_to_reach_powers_of (line 983) | def compute_paddings_to_reach_powers_of(arr, height_base, width_base,
  function compute_croppings_to_reach_powers_of (line 1055) | def compute_croppings_to_reach_powers_of(arr, height_base, width_base,
  function Scale (line 1135) | def Scale(*args, **kwargs):
  class Resize (line 1141) | class Resize(meta.Augmenter):
    method __init__ (line 1279) | def __init__(self, size, interpolation="cubic",
    method _handle_size_arg (line 1291) | def _handle_size_arg(cls, size, subcall):
    method _handle_interpolation_arg (line 1378) | def _handle_interpolation_arg(cls, interpolation):
    method _augment_batch_ (line 1397) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 1429) | def _augment_images_by_samples(self, images, samples):
    method _augment_maps_by_samples (line 1453) | def _augment_maps_by_samples(self, augmentables, arr_attr_name, samples):
    method _augment_keypoints_by_samples (line 1480) | def _augment_keypoints_by_samples(self, kpsois, samples):
    method _draw_samples (line 1493) | def _draw_samples(self, nb_images, random_state):
    method _compute_height_width (line 1509) | def _compute_height_width(cls, image_shape, sample_a, sample_b, size_o...
    method get_parameters (line 1547) | def get_parameters(self):
  class _CropAndPadSamplingResult (line 1552) | class _CropAndPadSamplingResult(object):
    method __init__ (line 1553) | def __init__(self, crop_top, crop_right, crop_bottom, crop_left,
    method croppings (line 1566) | def croppings(self, i):
    method paddings (line 1575) | def paddings(self, i):
  class CropAndPad (line 1585) | class CropAndPad(meta.Augmenter):
    method __init__ (line 1823) | def __init__(self, px=None, percent=None, pad_mode="constant", pad_cva...
    method _handle_px_and_percent_args (line 1856) | def _handle_px_and_percent_args(cls, px, percent):
    method _handle_px_arg (line 1875) | def _handle_px_arg(cls, px):
    method _handle_percent_arg (line 1930) | def _handle_percent_arg(cls, percent):
    method _augment_batch_ (line 1992) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 2025) | def _augment_images_by_samples(self, images, samples):
    method _augment_maps_by_samples (line 2045) | def _augment_maps_by_samples(self, augmentables, pad_mode, pad_cval,
    method _augment_keypoints_by_samples (line 2067) | def _augment_keypoints_by_samples(self, keypoints_on_images, samples):
    method _draw_samples (line 2077) | def _draw_samples(self, random_state, shapes):
    method get_parameters (line 2162) | def get_parameters(self):
  class Pad (line 2168) | class Pad(CropAndPad):
    method __init__ (line 2364) | def __init__(self, px=None, percent=None, pad_mode="constant", pad_cva...
  class Crop (line 2401) | class Crop(CropAndPad):
    method __init__ (line 2550) | def __init__(self, px=None, percent=None, keep_size=True,
  class PadToFixedSize (line 2590) | class PadToFixedSize(meta.Augmenter):
    method __init__ (line 2718) | def __init__(self, width, height, pad_mode="constant", pad_cval=0,
    method _augment_batch_ (line 2750) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 2784) | def _augment_images_by_samples(self, images, samples):
    method _augment_keypoints_by_samples (line 2806) | def _augment_keypoints_by_samples(self, keypoints_on_images, samples):
    method _augment_maps_by_samples (line 2825) | def _augment_maps_by_samples(self, augmentables, samples, pad_mode,
    method _draw_samples (line 2853) | def _draw_samples(self, batch, random_state):
    method _calculate_paddings (line 2878) | def _calculate_paddings(cls, height_image, width_image,
    method get_parameters (line 2897) | def get_parameters(self):
  class CenterPadToFixedSize (line 2903) | class CenterPadToFixedSize(PadToFixedSize):
    method __init__ (line 2960) | def __init__(self, width, height, pad_mode="constant", pad_cval=0,
  class CropToFixedSize (line 2974) | class CropToFixedSize(meta.Augmenter):
    method __init__ (line 3097) | def __init__(self, width, height, position="uniform",
    method _augment_batch_ (line 3115) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _augment_images_by_samples (line 3147) | def _augment_images_by_samples(self, images, samples):
    method _augment_keypoints_by_samples (line 3165) | def _augment_keypoints_by_samples(self, kpsois, samples):
    method _augment_maps_by_samples (line 3183) | def _augment_maps_by_samples(self, augmentables, samples):
    method _calculate_crop_amounts (line 3198) | def _calculate_crop_amounts(cls, height_image, width_image,
    method _draw_samples (line 3216) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 3238) | def get_parameters(self):
  class CenterCropToFixedSize (line 3243) | class CenterCropToFixedSize(CropToFixedSize):
    method __init__ (line 3298) | def __init__(self, width, height,
  class CropToMultiplesOf (line 3307) | class CropToMultiplesOf(CropToFixedSize):
    method __init__ (line 3369) | def __init__(self, width_multiple, height_multiple, position="uniform",
    method _draw_samples (line 3380) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 3406) | def get_parameters(self):
  class CenterCropToMultiplesOf (line 3411) | class CenterCropToMultiplesOf(CropToMultiplesOf):
    method __init__ (line 3465) | def __init__(self, width_multiple, height_multiple,
  class PadToMultiplesOf (line 3476) | class PadToMultiplesOf(PadToFixedSize):
    method __init__ (line 3537) | def __init__(self, width_multiple, height_multiple,
    method _draw_samples (line 3551) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 3577) | def get_parameters(self):
  class CenterPadToMultiplesOf (line 3584) | class CenterPadToMultiplesOf(PadToMultiplesOf):
    method __init__ (line 3644) | def __init__(self, width_multiple, height_multiple,
  class CropToPowersOf (line 3658) | class CropToPowersOf(CropToFixedSize):
    method __init__ (line 3727) | def __init__(self, width_base, height_base, position="uniform",
    method _draw_samples (line 3738) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 3764) | def get_parameters(self):
  class CenterCropToPowersOf (line 3769) | class CenterCropToPowersOf(CropToPowersOf):
    method __init__ (line 3823) | def __init__(self, width_base, height_base,
  class PadToPowersOf (line 3832) | class PadToPowersOf(PadToFixedSize):
    method __init__ (line 3900) | def __init__(self, width_base, height_base,
    method _draw_samples (line 3914) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 3940) | def get_parameters(self):
  class CenterPadToPowersOf (line 3947) | class CenterPadToPowersOf(PadToPowersOf):
    method __init__ (line 4006) | def __init__(self, width_base, height_base,
  class CropToAspectRatio (line 4018) | class CropToAspectRatio(CropToFixedSize):
    method __init__ (line 4073) | def __init__(self, aspect_ratio, position="uniform",
    method _draw_samples (line 4083) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 4112) | def get_parameters(self):
  class CenterCropToAspectRatio (line 4117) | class CenterCropToAspectRatio(CropToAspectRatio):
    method __init__ (line 4168) | def __init__(self, aspect_ratio,
  class PadToAspectRatio (line 4177) | class PadToAspectRatio(PadToFixedSize):
    method __init__ (line 4235) | def __init__(self, aspect_ratio, pad_mode="constant", pad_cval=0,
    method _draw_samples (line 4247) | def _draw_samples(self, batch, random_state):
    method get_parameters (line 4273) | def get_parameters(self):
  class CenterPadToAspectRatio (line 4279) | class CenterPadToAspectRatio(PadToAspectRatio):
    method __init__ (line 4328) | def __init__(self, aspect_ratio, pad_mode="constant", pad_cval=0,
  class CropToSquare (line 4338) | class CropToSquare(CropToAspectRatio):
    method __init__ (line 4387) | def __init__(self, position="uniform",
  class CenterCropToSquare (line 4396) | class CenterCropToSquare(CropToSquare):
    method __init__ (line 4450) | def __init__(self, seed=None, name=None,
  class PadToSquare (line 4458) | class PadToSquare(PadToAspectRatio):
    method __init__ (line 4511) | def __init__(self, pad_mode="constant", pad_cval=0, position="uniform",
  class CenterPadToSquare (line 4521) | class CenterPadToSquare(PadToSquare):
    method __init__ (line 4567) | def __init__(self, pad_mode="constant", pad_cval=0,
  class KeepSizeByResize (line 4576) | class KeepSizeByResize(meta.Augmenter):
    method __init__ (line 4686) | def __init__(self, children,
    method _augment_batch_ (line 4733) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method _keep_size_images (line 4777) | def _keep_size_images(cls, images, shapes_orig, images_were_array,
    method _keep_size_maps (line 4803) | def _keep_size_maps(cls, augmentables, shapes_orig_images,
    method _keep_size_keypoints (line 4821) | def _keep_size_keypoints(cls, kpsois_aug, shapes_orig, interpolations):
    method _get_shapes (line 4834) | def _get_shapes(cls, batch):
    method _draw_samples (line 4849) | def _draw_samples(self, nb_images, random_state):
    method _to_deterministic (line 4895) | def _to_deterministic(self):
    method get_parameters (line 4902) | def get_parameters(self):
    method get_children_lists (line 4906) | def get_children_lists(self):
    method __str__ (line 4910) | def __str__(self):

FILE: imgaug/augmenters/weather.py
  class FastSnowyLandscape (line 26) | class FastSnowyLandscape(meta.Augmenter):
    method __init__ (line 135) | def __init__(self, lightness_threshold=(100, 255),
    method _draw_samples (line 152) | def _draw_samples(self, augmentables, random_state):
    method _augment_batch_ (line 162) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 188) | def get_parameters(self):
  class CloudLayer (line 197) | class CloudLayer(meta.Augmenter):
    method __init__ (line 347) | def __init__(self, intensity_mean, intensity_freq_exponent,
    method _augment_batch_ (line 370) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 381) | def get_parameters(self):
    method draw_on_image (line 393) | def draw_on_image(self, image, random_state):
    method generate_maps (line 418) | def generate_maps(self, image, random_state):
    method _generate_intensity_map_coarse (line 451) | def _generate_intensity_map_coarse(cls, height, width, intensity_mean,
    method _generate_intensity_map_fine (line 466) | def _generate_intensity_map_fine(cls, height, width, intensity_mean,
    method _generate_alpha_mask (line 478) | def _generate_alpha_mask(cls, height, width, alpha_min, alpha_multiplier,
  class Clouds (line 497) | class Clouds(meta.SomeOf):
    method __init__ (line 557) | def __init__(self,
  class Fog (line 601) | class Fog(CloudLayer):
    method __init__ (line 660) | def __init__(self,
  class SnowflakesLayer (line 680) | class SnowflakesLayer(meta.Augmenter):
    method __init__ (line 847) | def __init__(self, density, density_uniformity, flake_size,
    method _augment_batch_ (line 876) | def _augment_batch_(self, batch, random_state, parents, hooks):
    method get_parameters (line 887) | def get_parameters(self):
    method draw_on_image (line 899) | def draw_on_image(self, image, random_state):
    method _generate_noise (line 953) | def _generate_noise(cls, height, width, density, random_state):
    method _gate (line 958) | def _gate(cls, noise, gate_noise, gate_size, random_state):
    method _blur (line 971) | def _blur(cls, noise, sigma):
    method _motion_blur (line 975) | def _motion_blur(cls, noise, angle, speed, random_state):
    method _postprocess_noise (line 989) | def _postprocess_noise(cls, noise_small_blur,
    method _blend (line 1005) | def _blend(cls, image, speed_sample, noise_small_blur_rgb):
    method _blend_by_sum (line 1018) | def _blend_by_sum(cls, image_f32, noise_small_blur_rgb):
    method _blend_by_max (line 1024) | def _blend_by_max(cls, image_f32, noise_small_blur_rgb):
  class Snowflakes (line 1029) | class Snowflakes(meta.SomeOf):
    method __init__ (line 1196) | def __init__(self, density=(0.005, 0.075), density_uniformity=(0.3, 0.9),
  class RainLayer (line 1222) | class RainLayer(SnowflakesLayer):
    method __init__ (line 1293) | def __init__(self, density, density_uniformity, drop_size,
    method _blur (line 1307) | def _blur(cls, noise, sigma):
    method _postprocess_noise (line 1312) | def _postprocess_noise(cls, noise_small_blur,
    method _blend (line 1320) | def _blend(cls, image, speed_sample, noise_small_blur_rgb):
  class Rain (line 1339) | class Rain(meta.SomeOf):
    method __init__ (line 1420) | def __init__(self, nb_iterations=(1, 3),

FILE: imgaug/data.py
  function _quokka_normalize_extract (line 26) | def _quokka_normalize_extract(extract):
  function _compute_resized_shape (line 84) | def _compute_resized_shape(from_shape, to_shape):
  function quokka (line 163) | def quokka(size=None, extract=None):
  function quokka_square (line 211) | def quokka_square(size=None):
  function quokka_heatmap (line 233) | def quokka_heatmap(size=None, extract=None):
  function quokka_segmentation_map (line 276) | def quokka_segmentation_map(size=None, extract=None):
  function quokka_keypoints (line 330) | def quokka_keypoints(size=None, extract=None):
  function quokka_bounding_boxes (line 378) | def quokka_bounding_boxes(size=None, extract=None):
  function quokka_polygons (line 433) | def quokka_polygons(size=None, extract=None):

FILE: imgaug/dtypes.py
  function normalize_dtypes (line 56) | def normalize_dtypes(dtypes):
  function normalize_dtype (line 62) | def normalize_dtype(dtype):
  function change_dtype_ (line 72) | def change_dtype_(arr, dtype, clip=True, round=True):
  function change_dtypes_ (line 91) | def change_dtypes_(images, dtypes, clip=True, round=True):
  function restore_dtypes_ (line 141) | def restore_dtypes_(images, dtypes, clip=True, round=True):
  function copy_dtypes_for_restore (line 146) | def copy_dtypes_for_restore(images, force_list=False):
  function increase_itemsize_of_dtype (line 154) | def increase_itemsize_of_dtype(dtype, factor):
  function get_minimal_dtype (line 188) | def get_minimal_dtype(arrays, increase_itemsize_factor=1):
  function promote_array_dtypes_ (line 215) | def promote_array_dtypes_(arrays, dtypes=None, increase_itemsize_factor=1):
  function increase_array_resolutions_ (line 225) | def increase_array_resolutions_(arrays, factor):
  function get_value_range_of_dtype (line 231) | def get_value_range_of_dtype(dtype):
  function clip_ (line 251) | def clip_(array, min_value, max_value):
  function clip_to_dtype_value_range_ (line 294) | def clip_to_dtype_value_range_(array, dtype, validate=True,
  function gate_dtypes_strs (line 323) | def gate_dtypes_strs(dtypes, allowed, disallowed, augmenter=None):
  function _convert_gate_dtype_strs_to_types (line 353) | def _convert_gate_dtype_strs_to_types(allowed, disallowed):
  function _convert_dtype_strs_to_types_cached (line 374) | def _convert_dtype_strs_to_types_cached(dtypes):
  function _convert_dtype_strs_to_types (line 383) | def _convert_dtype_strs_to_types(dtypes):
  function gate_dtypes (line 399) | def gate_dtypes(dtypes, allowed, disallowed, augmenter=None):
  function _gate_dtypes (line 422) | def _gate_dtypes(dtypes, allowed, disallowed, augmenter=None):
  function _dtype_names_to_string (line 513) | def _dtype_names_to_string(dtypes):
  function allow_only_uint8 (line 519) | def allow_only_uint8(dtypes, augmenter=None):

FILE: imgaug/external/opensimplex.py
  function floor (line 14) | def floor(num):
  function overflow (line 82) | def overflow(x):
  class OpenSimplex (line 88) | class OpenSimplex(object):
    method __init__ (line 93) | def __init__(self, seed=DEFAULT_SEED):
    method _extrapolate2d (line 115) | def _extrapolate2d(self, xsb, ysb, dx, dy):
    method _extrapolate3d (line 122) | def _extrapolate3d(self, xsb, ysb, zsb, dx, dy, dz):
    method _extrapolate4d (line 131) | def _extrapolate4d(self, xsb, ysb, zsb, wsb, dx, dy, dz, dw):
    method noise2d (line 143) | def noise2d(self, x, y):
    method noise3d (line 247) | def noise3d(self, x, y, z):
    method noise4d (line 743) | def noise4d(self, x, y, z, w):

FILE: imgaug/external/poly_point_isect_py2py3.py
  class Event (line 88) | class Event:
    class Type (line 104) | class Type:
    method __init__ (line 111) | def __init__(self, type, point, segment, slope):
    method __hash__ (line 128) | def __hash__(self):
    method is_vertical (line 131) | def is_vertical(self):
    method y_intercept_x (line 135) | def y_intercept_x(self, x):
    method Compare (line 160) | def Compare(sweep_line, this, that):
    method __repr__ (line 203) | def __repr__(self):
  class SweepLine (line 222) | class SweepLine:
    method __init__ (line 243) | def __init__(self):
    method get_intersections (line 250) | def get_intersections(self):
    method get_intersections_with_segments (line 260) | def get_intersections_with_segments(self):
    method _check_intersection (line 282) | def _check_intersection(self, a, b):
    method _sweep_to (line 328) | def _sweep_to(self, p):
    method insert (line 336) | def insert(self, event):
    method remove (line 349) | def remove(self, event):
    method above (line 364) | def above(self, event):
    method below (line 367) | def below(self, event):
    method above_all (line 379) | def above_all(self, event):
    method handle (line 383) | def handle(self, p, events_current):
    method handle_event (line 400) | def handle_event(self, event):
  class EventQueue (line 488) | class EventQueue:
    method __init__ (line 496) | def __init__(self, segments, line):
    method offer (line 527) | def offer(self, p, e):
    method poll (line 545) | def poll(self):
  function isect_segments_impl (line 557) | def isect_segments_impl(segments, include_segments=False):
  function isect_polygon_impl (line 598) | def isect_polygon_impl(points, include_segments=False):
  function isect_segments (line 606) | def isect_segments(segments):
  function isect_polygon (line 610) | def isect_polygon(segments):
  function isect_segments_include_segments (line 614) | def isect_segments_include_segments(segments):
  function isect_polygon_include_segments (line 618) | def isect_polygon_include_segments(segments):
  function slope_v2v2 (line 626) | def slope_v2v2(p1, p2):
  function sub_v2v2 (line 636) | def sub_v2v2(a, b):
  function dot_v2v2 (line 642) | def dot_v2v2(a, b):
  function len_squared_v2v2 (line 648) | def len_squared_v2v2(a, b):
  function line_point_factor_v2 (line 653) | def line_point_factor_v2(p, l1, l2, default=NUM_ZERO):
  function isect_seg_seg_v2_point (line 660) | def isect_seg_seg_v2_point(v1, v2, v3, v4, bias=NUM_ZERO):
  function isect_segments__naive (line 698) | def isect_segments__naive(segments):
  function isect_polygon__naive (line 737) | def isect_polygon__naive(points):
  class _ABCTree (line 791) | class _ABCTree(object):
    method __init__ (line 792) | def __init__(self, items=None, cmp=None, cmp_data=None):
    method clear (line 809) | def clear(self):
    method count (line 821) | def count(self):
    method get_value (line 825) | def get_value(self, key):
    method pop_item (line 837) | def pop_item(self):
    method min_item (line 857) | def min_item(self):
    method max_item (line 866) | def max_item(self):
    method succ_item (line 875) | def succ_item(self, key, default=_sentinel):
    method prev_item (line 915) | def prev_item(self, key, default=_sentinel):
    method __repr__ (line 956) | def __repr__(self):
    method __contains__ (line 961) | def __contains__(self, key):
    method __len__ (line 969) | def __len__(self):
    method is_empty (line 973) | def is_empty(self):
    method set_default (line 977) | def set_default(self, key, default=None):
    method get (line 986) | def get(self, key, default=None):
    method pop (line 993) | def pop(self, key, *args):
    method prev_key (line 1009) | def prev_key(self, key, default=_sentinel):
    method succ_key (line 1016) | def succ_key(self, key, default=_sentinel):
    method pop_min (line 1023) | def pop_min(self):
    method pop_max (line 1031) | def pop_max(self):
    method min_key (line 1039) | def min_key(self):
    method max_key (line 1043) | def max_key(self):
    method key_slice (line 1047) | def key_slice(self, start_key, end_key, reverse=False):
    method iter_items (line 1055) | def iter_items(self,  start_key=None, end_key=None, reverse=False):
    method _iter_items_forward (line 1068) | def _iter_items_forward(self, start_key=None, end_key=None):
    method _iter_items_backward (line 1073) | def _iter_items_backward(self, start_key=None, end_key=None):
    method _iter_items (line 1078) | def _iter_items(self, left=attrgetter("left"), right=attrgetter("right...
    method _get_in_range_func (line 1100) | def _get_in_range_func(self, start_key, end_key):
  class Node (line 1116) | class Node(object):
    method __init__ (line 1120) | def __init__(self, key=None, value=None):
    method free (line 1127) | def free(self):
    method __getitem__ (line 1133) | def __getitem__(self, key):
    method __setitem__ (line 1137) | def __setitem__(self, key, value):
  class RBTree (line 1145) | class RBTree(_ABCTree):
    method is_red (line 1152) | def is_red(node):
    method jsw_single (line 1159) | def jsw_single(root, direction):
    method jsw_double (line 1169) | def jsw_double(root, direction):
    method _new_node (line 1174) | def _new_node(self, key, value):
    method insert (line 1179) | def insert(self, key, value):
    method remove (line 1231) | def remove(self, key):

FILE: imgaug/imgaug.py
  class DeprecationWarning (line 64) | class DeprecationWarning(Warning):  # pylint: disable=redefined-builtin
  function warn (line 73) | def warn(msg, category=UserWarning, stacklevel=2):
  function warn_deprecated (line 94) | def warn_deprecated(msg, stacklevel=2):
  class deprecated (line 113) | class deprecated(object):  # pylint: disable=invalid-name
    method __init__ (line 137) | def __init__(self, alt_func=None, behavior="warn", removed_version=None,
    method __call__ (line 144) | def __call__(self, func):
  function is_np_array (line 205) | def is_np_array(val):
  function is_np_scalar (line 225) | def is_np_scalar(val):
  function is_single_integer (line 246) | def is_single_integer(val):
  function is_single_float (line 263) | def is_single_float(val):
  function is_single_number (line 284) | def is_single_number(val):
  function is_iterable (line 301) | def is_iterable(val):
  function is_string (line 320) | def is_string(val):
  function is_single_bool (line 337) | def is_single_bool(val):
  function is_integer_array (line 355) | def is_integer_array(val):
  function is_float_array (line 372) | def is_float_array(val):
  function is_callable (line 389) | def is_callable(val):
  function is_generator (line 409) | def is_generator(val):
  function flatten (line 426) | def flatten(nested_iterable):
  function caller_name (line 456) | def caller_name():
  function seed (line 469) | def seed(entropy=None, seedval=None):
  function normalize_random_state (line 514) | def normalize_random_state(random_state):
  function current_random_state (line 534) | def current_random_state():
  function new_random_state (line 550) | def new_random_state(seed=None, fully_random=False):
  function dummy_random_state (line 581) | def dummy_random_state():
  function copy_random_state (line 595) | def copy_random_state(random_state, force_copy=False):
  function derive_random_state (line 621) | def derive_random_state(random_state):
  function derive_random_states (line 641) | def derive_random_states(random_state, n=1):
  function forward_random_state (line 665) | def forward_random_state(random_state):
  function angle_between_vectors (line 679) | def angle_between_vectors(v1, v2):
  function compute_line_intersection_point (line 721) | def compute_line_intersection_point(x1, y1, x2, y2, x3, y3, x4, y4):
  function draw_text (line 789) | def draw_text(img, y, x, text, color=(0, 255, 0), size=25):
  function imresize_many_images (line 879) | def imresize_many_images(images, sizes=None, interpolation=None):
  function _assert_two_or_three_dims (line 1137) | def _assert_two_or_three_dims(shape):
  function imresize_single_image (line 1145) | def imresize_single_image(image, sizes, interpolation=None):
  function pool (line 1184) | def pool(arr, block_size, func, pad_mode="constant", pad_cval=0,
  function _pool_dispatcher_ (line 1309) | def _pool_dispatcher_(arr, block_size, func_uint8, blockfunc, pad_mode="...
  function avg_pool (line 1334) | def avg_pool(arr, block_size, pad_mode="reflect", pad_cval=128,
  function _avg_pool_uint8 (line 1396) | def _avg_pool_uint8(arr, block_size, pad_mode="reflect", pad_cval=128):
  function max_pool (line 1422) | def max_pool(arr, block_size, pad_mode="edge", pad_cval=0,
  function max_pool_ (line 1470) | def max_pool_(arr, block_size, pad_mode="edge", pad_cval=0,
  function min_pool (line 1529) | def min_pool(arr, block_size, pad_mode="edge", pad_cval=255,
  function min_pool_ (line 1573) | def min_pool_(arr, block_size, pad_mode="edge", pad_cval=255,
  function _min_pool_uint8_ (line 1629) | def _min_pool_uint8_(arr, block_size, pad_mode="edge", pad_cval=255):
  function _max_pool_uint8_ (line 1635) | def _max_pool_uint8_(arr, block_size, pad_mode="edge", pad_cval=0):
  function _minmax_pool_uint8_ (line 1641) | def _minmax_pool_uint8_(arr, block_size, func, pad_mode, pad_cval):
  function median_pool (line 1675) | def median_pool(arr, block_size, pad_mode="reflect", pad_cval=128,
  function _median_pool_cv2 (line 1754) | def _median_pool_cv2(arr, block_size, pad_mode, pad_cval):
  function draw_grid (line 1779) | def draw_grid(images, rows=None, cols=None):
  function show_grid (line 1886) | def show_grid(images, rows=None, cols=None):
  function imshow (line 1914) | def imshow(image, backend=IMSHOW_BACKEND_DEFAULT):
  function do_assert (line 1975) | def do_assert(condition, message="Assertion failed."):
  function _normalize_cv2_input_arr_ (line 1996) | def _normalize_cv2_input_arr_(arr):
  function apply_lut (line 2006) | def apply_lut(image, table):
  function apply_lut_ (line 2034) | def apply_lut_(image, table):
  function _identity_decorator (line 2124) | def _identity_decorator(*_dec_args, **_dec_kwargs):
  class HooksImages (line 2140) | class HooksImages(object):
    method __init__ (line 2214) | def __init__(self, activator=None, propagator=None, preprocessor=None,
    method is_activated (line 2221) | def is_activated(self, images, augmenter, parents, default):
    method is_propagating (line 2237) | def is_propagating(self, images, augmenter, parents, default):
    method preprocess (line 2257) | def preprocess(self, images, augmenter, parents):
    method postprocess (line 2270) | def postprocess(self, images, augmenter, parents):
  class HooksHeatmaps (line 2284) | class HooksHeatmaps(HooksImages):
  class HooksKeypoints (line 2295) | class HooksKeypoints(HooksImages):
  function _mark_moved_class_or_function (line 2311) | def _mark_moved_class_or_function(class_name_old, module_name_new,

FILE: imgaug/multicore.py
  function _get_context_method (line 33) | def _get_context_method():
  function _set_context (line 79) | def _set_context(method):
  function _reset_context (line 88) | def _reset_context():
  function _autoset_context (line 93) | def _autoset_context():
  function _get_context (line 98) | def _get_context():
  class Pool (line 104) | class Pool(object):
    method __init__ (line 147) | def __init__(self, augseq, processes=None, maxtasksperchild=None,
    method pool (line 187) | def pool(self):
    method map_batches (line 233) | def map_batches(self, batches, chunksize=None):
    method map_batches_async (line 258) | def map_batches_async(self, batches, chunksize=None, callback=None,
    method _assert_batches_is_list (line 293) | def _assert_batches_is_list(cls, batches):
    method imap_batches (line 298) | def imap_batches(self, batches, chunksize=1, output_buffer_size=None):
    method imap_batches_unordered (line 352) | def imap_batches_unordered(self, batches, chunksize=1,
    method _assert_batches_is_generator (line 407) | def _assert_batches_is_generator(cls, batches):
    method __enter__ (line 412) | def __enter__(self):
    method __exit__ (line 418) | def __exit__(self, exc_type, exc_val, exc_tb):
    method close (line 421) | def close(self):
    method terminate (line 428) | def terminate(self):
    method join (line 437) | def join(self):
    method _handle_batch_ids (line 449) | def _handle_batch_ids(self, batches):
    method _handle_batch_ids_gen (line 455) | def _handle_batch_ids_gen(self, batches):
    method _ibuffer_batch_loading (line 462) | def _ibuffer_batch_loading(cls, batches, output_buffer_left):
  function _create_output_buffer_left (line 469) | def _create_output_buffer_left(output_buffer_size):
  function _Pool_initialize_worker (line 481) | def _Pool_initialize_worker(augseq, seed_start):
  function _Pool_worker (line 513) | def _Pool_worker(batch_idx, batch):
  function _Pool_starworker (line 541) | def _Pool_starworker(inputs):
  function _reseed_global_local (line 546) | def _reseed_global_local(base_seed, augseq):
  function _derive_seed (line 553) | def _derive_seed(base_seed, offset=0):
  class BatchLoader (line 561) | class BatchLoader(object):
    method __init__ (line 590) | def __init__(self, load_batch_func, queue_size=50, nb_workers=1,
    method count_workers_alive (line 628) | def count_workers_alive(self):
    method all_finished (line 631) | def all_finished(self):
    method _main_worker (line 643) | def _main_worker(self):
    method _load_batches (line 677) | def _load_batches(cls, load_batch_func, queue_internal, join_signal,
    method terminate (line 711) | def terminate(self):
    method __del__ (line 759) | def __del__(self):
  class BackgroundAugmenter (line 764) | class BackgroundAugmenter(object):
    method __init__ (line 800) | def __init__(self, batch_loader, augseq, queue_size=50, nb_workers="au...
    method all_finished (line 837) | def all_finished(self):
    method get_batch (line 840) | def get_batch(self):
    method _augment_images_worker (line 872) | def _augment_images_worker(cls, augseq, queue_source, queue_result,
    method terminate (line 911) | def terminate(self):
    method __del__ (line 928) | def __del__(self):

FILE: imgaug/parameters.py
  function _prefetchable (line 39) | def _prefetchable(func):
  function _prefetchable_str (line 48) | def _prefetchable_str(func):
  function _wrap_param_in_prefetchers (line 57) | def _wrap_param_in_prefetchers(param, nb_prefetch):
  function _wrap_leafs_of_param_in_prefetchers (line 68) | def _wrap_leafs_of_param_in_prefetchers(param, nb_prefetch):
  function _wrap_leafs_of_param_in_prefetchers_recursive (line 77) | def _wrap_leafs_of_param_in_prefetchers_recursive(param, nb_prefetch):
  function toggle_prefetching (line 122) | def toggle_prefetching(enabled):
  class toggled_prefetching (line 138) | class toggled_prefetching(object):  # pylint: disable=invalid-name
    method __init__ (line 151) | def __init__(self, enabled):
    method __enter__ (line 156) | def __enter__(self):
    method __exit__ (line 163) | def __exit__(self, exception_type, exception_value, exception_traceback):
  class no_prefetching (line 169) | class no_prefetching(toggled_prefetching):  # pylint: disable=invalid-name
    method __init__ (line 177) | def __init__(self):
  function _check_value_range (line 181) | def _check_value_range(value, name, value_range):
  function handle_continuous_param (line 222) | def handle_continuous_param(param, name, value_range=None,
  function handle_discrete_param (line 264) | def handle_discrete_param(param, name, value_range=None, tuple_to_unifor...
  function handle_categorical_string_param (line 324) | def handle_categorical_string_param(param, name, valid_values=None,
  function handle_discrete_kernel_size_param (line 366) | def handle_discrete_kernel_size_param(param, name, value_range=(1, None),
  function handle_probability_param (line 431) | def handle_probability_param(param, name, tuple_to_uniform=False,
  function force_np_float_dtype (line 480) | def force_np_float_dtype(val):
  function both_np_float_if_one_is_float (line 486) | def both_np_float_if_one_is_float(a, b):
  function draw_distributions_grid (line 499) | def draw_distributions_grid(params, rows=None, cols=None,
  function show_distributions_grid (line 521) | def show_distributions_grid(params, rows=None, cols=None,
  class StochasticParameter (line 537) | class StochasticParameter(object):
    method __init__ (line 548) | def __init__(self):
    method prefetchable (line 552) | def prefetchable(self):
    method draw_sample (line 567) | def draw_sample(self, random_state=None):
    method draw_samples (line 587) | def draw_samples(self, size, random_state=None):
    method _draw_samples (line 618) | def _draw_samples(self, size, random_state):
    method __add__ (line 621) | def __add__(self, other):
    method __sub__ (line 629) | def __sub__(self, other):
    method __mul__ (line 637) | def __mul__(self, other):
    method __pow__ (line 645) | def __pow__(self, other, z=None):
    method __div__ (line 657) | def __div__(self, other):
    method __truediv__ (line 665) | def __truediv__(self, other):
    method __floordiv__ (line 673) | def __floordiv__(self, other):
    method __radd__ (line 681) | def __radd__(self, other):
    method __rsub__ (line 689) | def __rsub__(self, other):
    method __rmul__ (line 697) | def __rmul__(self, other):
    method __rpow__ (line 705) | def __rpow__(self, other, z=None):
    method __rdiv__ (line 717) | def __rdiv__(self, other):
    method __rtruediv__ (line 725) | def __rtruediv__(self, other):
    method __rfloordiv__ (line 733) | def __rfloordiv__(self, other):
    method copy (line 741) | def copy(self):
    method deepcopy (line 752) | def deepcopy(self):
    method draw_distribution_graph (line 763) | def draw_distribution_graph(self, title=None, size=(1000, 1000), bins=...
  class AutoPrefetcher (line 838) | class AutoPrefetcher(StochasticParameter):
    method __init__ (line 870) | def __init__(self, other_param, nb_prefetch):
    method _draw_samples (line 880) | def _draw_samples(self, size, random_state):
    method _prefetch (line 910) | def _prefetch(self, random_state):
    method __getattr__ (line 922) | def __getattr__(self, attr):
    method __repr__ (line 929) | def __repr__(self):
    method __str__ (line 933) | def __str__(self):
  class Deterministic (line 953) | class Deterministic(StochasticParameter):
    method __init__ (line 977) | def __init__(self, value):
    method _draw_samples (line 988) | def _draw_samples(self, size, random_state):
    method __repr__ (line 996) | def __repr__(self):
    method __str__ (line 999) | def __str__(self):
  class DeterministicList (line 1008) | class DeterministicList(StochasticParameter):
    method __init__ (line 1027) | def __init__(self, values):
    method _draw_samples (line 1052) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1064) | def __repr__(self):
    method __str__ (line 1068) | def __str__(self):
  class Choice (line 1075) | class Choice(StochasticParameter):
    method __init__ (line 1107) | def __init__(self, a, replace=True, p=None):
    method prefetchable (line 1125) | def prefetchable(self):
    method _draw_samples (line 1129) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1186) | def __repr__(self):
    method __str__ (line 1189) | def __str__(self):
  class Binomial (line 1194) | class Binomial(StochasticParameter):
    method __init__ (line 1226) | def __init__(self, p):
    method prefetchable (line 1232) | def prefetchable(self):
    method _draw_samples (line 1236) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1243) | def __repr__(self):
    method __str__ (line 1246) | def __str__(self):
  class DiscreteUniform (line 1250) | class DiscreteUniform(StochasticParameter):
    method __init__ (line 1287) | def __init__(self, a, b):
    method prefetchable (line 1296) | def prefetchable(self):
    method _draw_samples (line 1300) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1310) | def __repr__(self):
    method __str__ (line 1313) | def __str__(self):
  class Poisson (line 1317) | class Poisson(StochasticParameter):
    method __init__ (line 1353) | def __init__(self, lam):
    method prefetchable (line 1360) | def prefetchable(self):
    method _draw_samples (line 1364) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1370) | def __repr__(self):
    method __str__ (line 1373) | def __str__(self):
  class Normal (line 1377) | class Normal(StochasticParameter):
    method __init__ (line 1413) | def __init__(self, loc, scale):
    method prefetchable (line 1422) | def prefetchable(self):
    method _draw_samples (line 1426) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1434) | def __repr__(self):
    method __str__ (line 1437) | def __str__(self):
  class TruncatedNormal (line 1442) | class TruncatedNormal(StochasticParameter):
    method __init__ (line 1494) | def __init__(self, loc, scale, low=-np.inf, high=np.inf):
    method prefetchable (line 1505) | def prefetchable(self):
    method _draw_samples (line 1509) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1530) | def __repr__(self):
    method __str__ (line 1533) | def __str__(self):
  class Laplace (line 1538) | class Laplace(StochasticParameter):
    method __init__ (line 1577) | def __init__(self, loc, scale):
    method prefetchable (line 1586) | def prefetchable(self):
    method _draw_samples (line 1590) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1598) | def __repr__(self):
    method __str__ (line 1601) | def __str__(self):
  class ChiSquare (line 1605) | class ChiSquare(StochasticParameter):
    method __init__ (line 1635) | def __init__(self, df):
    method prefetchable (line 1643) | def prefetchable(self):
    method _draw_samples (line 1647) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1653) | def __repr__(self):
    method __str__ (line 1656) | def __str__(self):
  class Weibull (line 1660) | class Weibull(StochasticParameter):
    method __init__ (line 1691) | def __init__(self, a):
    method prefetchable (line 1699) | def prefetchable(self):
    method _draw_samples (line 1703) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1709) | def __repr__(self):
    method __str__ (line 1712) | def __str__(self):
  class Uniform (line 1717) | class Uniform(StochasticParameter):
    method __init__ (line 1753) | def __init__(self, a, b):
    method prefetchable (line 1762) | def prefetchable(self):
    method _draw_samples (line 1766) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1776) | def __repr__(self):
    method __str__ (line 1779) | def __str__(self):
  class Beta (line 1783) | class Beta(StochasticParameter):
    method __init__ (line 1819) | def __init__(self, alpha, beta, epsilon=0.0001):
    method prefetchable (line 1831) | def prefetchable(self):
    method _draw_samples (line 1835) | def _draw_samples(self, size, random_state):
    method __repr__ (line 1842) | def __repr__(self):
    method __str__ (line 1845) | def __str__(self):
  class FromLowerResolution (line 1849) | class FromLowerResolution(StochasticParameter):
    method __init__ (line 1924) | def __init__(self, other_param, size_percent=None, size_px=None,
    method _draw_samples (line 1979) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2043) | def __repr__(self):
    method __str__ (line 2046) | def __str__(self):
  class Clip (line 2061) | class Clip(StochasticParameter):
    method __init__ (line 2090) | def __init__(self, other_param, minval=None, maxval=None):
    method _draw_samples (line 2105) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2113) | def __repr__(self):
    method __str__ (line 2116) | def __str__(self):
  class Discretize (line 2128) | class Discretize(StochasticParameter):
    method __init__ (line 2152) | def __init__(self, other_param, round=True):
    method _draw_samples (line 2159) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2181) | def __repr__(self):
    method __str__ (line 2184) | def __str__(self):
  class Multiply (line 2189) | class Multiply(StochasticParameter):
    method __init__ (line 2233) | def __init__(self, other_param, val, elementwise=False):
    method _draw_samples (line 2241) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2258) | def __repr__(self):
    method __str__ (line 2261) | def __str__(self):
  class Divide (line 2266) | class Divide(StochasticParameter):
    method __init__ (line 2314) | def __init__(self, other_param, val, elementwise=False):
    method _draw_samples (line 2322) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2350) | def __repr__(self):
    method __str__ (line 2353) | def __str__(self):
  class Add (line 2362) | class Add(StochasticParameter):
    method __init__ (line 2407) | def __init__(self, other_param, val, elementwise=False):
    method _draw_samples (line 2415) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2431) | def __repr__(self):
    method __str__ (line 2434) | def __str__(self):
  class Subtract (line 2439) | class Subtract(StochasticParameter):
    method __init__ (line 2483) | def __init__(self, other_param, val, elementwise=False):
    method _draw_samples (line 2491) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2507) | def __repr__(self):
    method __str__ (line 2510) | def __str__(self):
  class Power (line 2515) | class Power(StochasticParameter):
    method __init__ (line 2560) | def __init__(self, other_param, val, elementwise=False):
    method _draw_samples (line 2568) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2597) | def __repr__(self):
    method __str__ (line 2600) | def __str__(self):
  class Absolute (line 2605) | class Absolute(StochasticParameter):
    method __init__ (line 2621) | def __init__(self, other_param):
    method _draw_samples (line 2628) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2632) | def __repr__(self):
    method __str__ (line 2635) | def __str__(self):
  class RandomSign (line 2640) | class RandomSign(StochasticParameter):
    method __init__ (line 2661) | def __init__(self, other_param, p_positive=0.5):
    method _draw_samples (line 2675) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2695) | def __repr__(self):
    method __str__ (line 2698) | def __str__(self):
  class ForceSign (line 2703) | class ForceSign(StochasticParameter):
    method __init__ (line 2738) | def __init__(self, other_param, positive, mode="invert",
    method _draw_samples (line 2759) | def _draw_samples(self, size, random_state):
    method __repr__ (line 2799) | def __repr__(self):
    method __str__ (line 2802) | def __str__(self):
  function Positive (line 2808) | def Positive(other_param, mode="invert", reroll_count_max=2):
  function Negative (line 2850) | def Negative(other_param, mode="invert", reroll_count_max=2):
  class IterativeNoiseAggregator (line 2895) | class IterativeNoiseAggregator(StochasticParameter):
    method __init__ (line 2960) | def __init__(self, other_param, iterations=(1, 3),
    method _draw_samples (line 3020) | def _draw_samples(self, size, random_state):
    method __repr__ (line 3054) | def __repr__(self):
    method __str__ (line 3057) | def __str__(self):
  class Sigmoid (line 3063) | class Sigmoid(StochasticParameter):
    method __init__ (line 3122) | def __init__(self, other_param, threshold=(-10, 10), activated=True,
    method create_for_noise (line 3144) | def create_for_noise(other_param, threshold=(-10, 10), activated=True):
    method _draw_samples (line 3168) | def _draw_samples(self, size, random_state):
    method __repr__ (line 3186) | def __repr__(self):
    method __str__ (line 3189) | def __str__(self):
  class SimplexNoise (line 3196) | class SimplexNoise(StochasticParameter):
    method __init__ (line 3262) | def __init__(self, size_px_max=(2, 16),
    method _draw_samples (line 3289) | def _draw_samples(self, size, random_state):
    method _draw_samples_hw (line 3303) | def _draw_samples_hw(self, height, width, random_state):
    method _draw_samples_iteration (line 3331) | def _draw_samples_iteration(self, height, width, rng, upscale_method):
    method __repr__ (line 3374) | def __repr__(self):
    method __str__ (line 3377) | def __str__(self):
  class FrequencyNoise (line 3384) | class FrequencyNoise(StochasticParameter):
    method __init__ (line 3464) | def __init__(self, exponent=(-4, 4), size_px_max=(4, 32),
    method _draw_samples (line 3495) | def _draw_samples(self, size, random_state):
    method _draw_samples_hw (line 3513) | def _draw_samples_hw(self, height, width, random_state):
    method _get_distance_matrix_cached (line 3595) | def _get_distance_matrix_cached(self, size):
    method _extract_distance_matrix (line 3606) | def _extract_distance_matrix(cls, matrix, size):
    method _create_distance_matrix (line 3617) | def _create_distance_matrix(cls, size):
    method __repr__ (line 3632) | def __repr__(self):
    method __str__ (line 3635) | def __str__(self):
  function _assert_arg_is_stoch_param (line 3642) | def _assert_arg_is_stoch_param(arg_name, arg_value):

FILE: imgaug/random.py
  class RNG (line 89) | class RNG(object):
    method __init__ (line 153) | def __init__(self, generator):
    method state (line 173) | def state(self):
    method state (line 189) | def state(self, value):
    method set_state_ (line 201) | def set_state_(self, value):
    method use_state_of_ (line 219) | def use_state_of_(self, other):
    method is_global_rng (line 240) | def is_global_rng(self):
    method equals_global_rng (line 257) | def equals_global_rng(self):
    method generate_seed_ (line 272) | def generate_seed_(self):
    method generate_seeds_ (line 288) | def generate_seeds_(self, n):
    method reset_cache_ (line 309) | def reset_cache_(self):
    method derive_rng_ (line 321) | def derive_rng_(self):
    method derive_rngs_ (line 334) | def derive_rngs_(self, n):
    method equals (line 352) | def equals(self, other):
    method advance_ (line 368) | def advance_(self):
    method copy (line 389) | def copy(self):
    method copy_unless_global_rng (line 400) | def copy_unless_global_rng(self):
    method duplicate (line 414) | def duplicate(self, n):
    method create_fully_random (line 442) | def create_fully_random(cls):
    method create_pseudo_random_ (line 455) | def create_pseudo_random_(cls):
    method create_if_not_rng_ (line 472) | def create_if_not_rng_(cls, generator):
    method integers (line 505) | def integers(self, low, high=None, size=None, dtype="int32",
    method random (line 519) | def random(self, size, dtype="float32", out=None):
    method choice (line 532) | def choice(self, a, size=None, replace=True, p=None):
    method bytes (line 537) | def bytes(self, length):
    method shuffle (line 542) | def shuffle(self, x):
    method permutation (line 548) | def permutation(self, x):
    method beta (line 553) | def beta(self, a, b, size=None):
    method binomial (line 558) | def binomial(self, n, p, size=None):
    method chisquare (line 562) | def chisquare(self, df, size=None):
    method dirichlet (line 567) | def dirichlet(self, alpha, size=None):
    method exponential (line 571) | def exponential(self, scale=1.0, size=None):
    method f (line 575) | def f(self, dfnum, dfden, size=None):
    method gamma (line 579) | def gamma(self, shape, scale=1.0, size=None):
    method geometric (line 583) | def geometric(self, p, size=None):
    method gumbel (line 587) | def gumbel(self, loc=0.0, scale=1.0, size=None):
    method hypergeometric (line 591) | def hypergeometric(self, ngood, nbad, nsample, size=None):
    method laplace (line 596) | def laplace(self, loc=0.0, scale=1.0, size=None):
    method logistic (line 600) | def logistic(self, loc=0.0, scale=1.0, size=None):
    method lognormal (line 604) | def lognormal(self, mean=0.0, sigma=1.0, size=None):
    method logseries (line 608) | def logseries(self, p, size=None):
    method multinomial (line 612) | def multinomial(self, n, pvals, size=None):
    method multivariate_normal (line 616) | def multivariate_normal(self, mean, cov, size=None, check_valid="warn",
    method negative_binomial (line 622) | def negative_binomial(self, n, p, size=None):
    method noncentral_chisquare (line 626) | def noncentral_chisquare(self, df, nonc, size=None):
    method noncentral_f (line 631) | def noncentral_f(self, dfnum, dfden, nonc, size=None):
    method normal (line 636) | def normal(self, loc=0.0, scale=1.0, size=None):
    method pareto (line 640) | def pareto(self, a, size=None):
    method poisson (line 645) | def poisson(self, lam=1.0, size=None):
    method power (line 649) | def power(self, a, size=None):
    method rayleigh (line 654) | def rayleigh(self, scale=1.0, size=None):
    method standard_cauchy (line 658) | def standard_cauchy(self, size=None):
    method standard_exponential (line 662) | def standard_exponential(self, size=None, dtype="float32", method="zig",
    method standard_gamma (line 684) | def standard_gamma(self, shape, size=None, dtype="float32", out=None):
    method standard_normal (line 706) | def standard_normal(self, size=None, dtype="float32", out=None):
    method standard_t (line 727) | def standard_t(self, df, size=None):
    method triangular (line 732) | def triangular(self, left, mode, right, size=None):
    method uniform (line 737) | def uniform(self, low=0.0, high=1.0, size=None):
    method vonmises (line 741) | def vonmises(self, mu, kappa, size=None):
    method wald (line 746) | def wald(self, mean, scale, size=None):
    method weibull (line 750) | def weibull(self, a, size=None):
    method zipf (line 755) | def zipf(self, a, size=None):
    method rand (line 767) | def rand(self, *args):
    method randint (line 779) | def randint(self, low, high=None, size=None, dtype="int32"):
    method randn (line 798) | def randn(self, *args):
    method random_integers (line 811) | def random_integers(self, low, high=None, size=None):
    method random_sample (line 826) | def random_sample(self, size):
    method tomaxint (line 839) | def tomaxint(self, size=None):
  function supports_new_numpy_rng_style (line 857) | def supports_new_numpy_rng_style():
  function get_global_rng (line 873) | def get_global_rng():
  function seed (line 902) | def seed(entropy):
  function _seed_np117_ (line 925) | def _seed_np117_(entropy):
  function _seed_np116_ (line 933) | def _seed_np116_(entropy):
  function normalize_generator (line 937) | def normalize_generator(generator):
  function normalize_generator_ (line 982) | def normalize_generator_(generator):
  function _normalize_generator_np117_ (line 1004) | def _normalize_generator_np117_(generator):
  function _normalize_generator_np116_ (line 1034) | def _normalize_generator_np116_(random_state):
  function convert_seed_to_generator (line 1045) | def convert_seed_to_generator(entropy):
  function _convert_seed_to_generator_np117 (line 1065) | def _convert_seed_to_generator_np117(entropy):
  function _convert_seed_to_generator_np116 (line 1070) | def _convert_seed_to_generator_np116(entropy):
  function convert_seed_sequence_to_generator (line 1074) | def convert_seed_sequence_to_generator(seed_sequence):
  function create_pseudo_random_generator_ (line 1091) | def create_pseudo_random_generator_():
  function create_fully_random_generator (line 1108) | def create_fully_random_generator():
  function _create_fully_random_generator_np117 (line 1124) | def _create_fully_random_generator_np117():
  function _create_fully_random_generator_np116 (line 1129) | def _create_fully_random_generator_np116():
  function generate_seed_ (line 1133) | def generate_seed_(generator):
  function generate_seeds_ (line 1155) | def generate_seeds_(generator, n):
  function copy_generator (line 1178) | def copy_generator(generator):
  function _copy_generator_np117 (line 1198) | def _copy_generator_np117(generator):
  function _copy_generator_np116 (line 1208) | def _copy_generator_np116(random_state):
  function copy_generator_unless_global_generator (line 1215) | def copy_generator_unless_global_generator(generator):
  function reset_generator_cache_ (line 1240) | def reset_generator_cache_(generator):
  function _reset_generator_cache_np117_ (line 1262) | def _reset_generator_cache_np117_(generator):
  function _reset_generator_cache_np116_ (line 1272) | def _reset_generator_cache_np116_(random_state):
  function derive_generator_ (line 1282) | def derive_generator_(generator):
  function derive_generators_ (line 1304) | def derive_generators_(generator, n):
  function _derive_generators_np117_ (line 1328) | def _derive_generators_np117_(generator, n):
  function _derive_generators_np116_ (line 1362) | def _derive_generators_np116_(random_state, n):
  function get_generator_state (line 1367) | def get_generator_state(generator):
  function _get_generator_state_np117 (line 1390) | def _get_generator_state_np117(generator):
  function _get_generator_state_np116 (line 1394) | def _get_generator_state_np116(random_state):
  function set_generator_state_ (line 1398) | def set_generator_state_(generator, state):
  function _set_generator_state_np117_ (line 1418) | def _set_generator_state_np117_(generator, state):
  function _set_generator_state_np116_ (line 1422) | def _set_generator_state_np116_(random_state, state):
  function is_generator_equal_to (line 1426) | def is_generator_equal_to(generator, other_generator):
  function _is_generator_equal_to_np117 (line 1449) | def _is_generator_equal_to_np117(generato
Condensed preview — 290 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,613K chars).
[
  {
    "path": ".codacy.yml",
    "chars": 193,
    "preview": "exclude_paths:\n  - test/*\n  - test/augmenters/*\n  - test/augmentables/*\n  - checks/*\n  - imgaug/external/*\n  - old_versi"
  },
  {
    "path": ".github/workflows/build_wheels.yml",
    "chars": 3421,
    "preview": "# This action generates wheel files for python 2 and 3.\nname: build wheels\n\non:\n  push:\n    branches:\n      - 'master'\n\n"
  },
  {
    "path": ".github/workflows/test_master.yml",
    "chars": 4971,
    "preview": "# This is effectively identical to pr_or_push.yml, with the exceptions of:\n# (1) This is only executed upon pushes to ma"
  },
  {
    "path": ".github/workflows/test_pull_requests.yml",
    "chars": 5277,
    "preview": "name: test pull requests\n\non:\n  push:\n    branches:\n      - '!master'\n  pull_request:\n\njobs:\n  build:\n\n    # There were "
  },
  {
    "path": ".gitignore",
    "chars": 962,
    "preview": "*.py~\n*.rst~\n*.md~\n*.bak\n*.lprof\nreinstall.sh\nreinstall_conda.sh\ntodo.txt\npypi-install-guide.txt\nchecks/bb_aug.jpg\ncheck"
  },
  {
    "path": ".pylintrc",
    "chars": 20857,
    "preview": "[MASTER]\n\n# A comma-separated list of package or module names from where C extensions may\n# be loaded. Extensions are lo"
  },
  {
    "path": ".travis.yml",
    "chars": 2329,
    "preview": "sudo: required\n\ndist: trusty\n\nlanguage:\n  - python\n  - cpp\n\nenv:\n  global:\n    - CODACY_PROJECT_TOKEN=1370ce38e99e40af84"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 88,
    "preview": "This file is no longer used.\nSee `changelogs/` for all current and previous changelogs.\n"
  },
  {
    "path": "LICENSE",
    "chars": 1073,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2015 aleju\n\nPermission is hereby granted, free of charge, to any person obtaining a"
  },
  {
    "path": "MANIFEST.in",
    "chars": 179,
    "preview": "include setup.py\ninclude setup.cfg\ninclude LICENSE\ninclude MANIFEST.in\ninclude README.md\ninclude requirements.txt\nrecurs"
  },
  {
    "path": "README.md",
    "chars": 83801,
    "preview": "# imgaug\n\nThis python library helps you with augmenting images for your machine learning projects.\nIt converts a set of "
  },
  {
    "path": "bandit.yml",
    "chars": 261,
    "preview": "skips: [\n  'B101',\n  'B301',  # \"Pickle and modules that wrap it can be unsafe when used to\n           #  deserialize un"
  },
  {
    "path": "changelogs/0.3.0/v0.3.0.cleaned.md",
    "chars": 40629,
    "preview": "# 0.3.0 Cleaned Up Log Of Changes\n\n## Improved Segmentation Map Augmentation #302\n\nAugmentation of Segmentation Maps is "
  },
  {
    "path": "changelogs/0.3.0/v0.3.0.uncleaned.md",
    "chars": 40683,
    "preview": "# 0.3.0, Uncleaned Raw Log Of Changes\n\n* Added argument `output_buffer_size` to `multicore.Pool.imap_batches()`\n  and `m"
  },
  {
    "path": "changelogs/0.4.0/20191003_reworked_aug_methods.md",
    "chars": 7914,
    "preview": "# Reworked Augmentation Methods #451 #566\n\n* Added method `to_normalized_batch()` to `imgaug.augmentables.batches.Batch`"
  },
  {
    "path": "changelogs/0.4.0/20191016_pooling_affects_maps.md",
    "chars": 692,
    "preview": "# Pooling Augmenters now affects Maps #457\n\nPooling augmenters were previously implemented so that they did not pool\nthe"
  },
  {
    "path": "changelogs/0.4.0/20191026_reworked_quantization.md",
    "chars": 1431,
    "preview": "# Reworked Quantization #467\n\n* Renamed `imgaug.augmenters.color.quantize_colors_uniform(image, n_colors)`\n  to `imgaug."
  },
  {
    "path": "changelogs/0.4.0/20191027_improve_invert.md",
    "chars": 749,
    "preview": "# Improve Invert #469\n\n* Improved performance of `imgaug.augmenters.arithmetic.invert()` and\n  `imgaug.augmenters.arithm"
  },
  {
    "path": "changelogs/0.4.0/20191111_pickleable.md",
    "chars": 480,
    "preview": "# All Augmenters Pickle-able #493 #575\n\nEnsured that all augmenters can be pickled.\n\n* Added function `imgaug.testutils."
  },
  {
    "path": "changelogs/0.4.0/20191113_iterable_augmentables.md",
    "chars": 1184,
    "preview": "# Simplified Access to Coordinates and Items in Augmentables #495 #541\n\n* Added module `imgaug.augmentables.base`.\n* Add"
  },
  {
    "path": "changelogs/0.4.0/20191610_crop_and_pad.md",
    "chars": 3545,
    "preview": "# Changes to Crop and Pad augmenters #459\n\nThe following functions were moved. Their old names are now deprecated.\n* Mov"
  },
  {
    "path": "changelogs/0.4.0/20191610_perspective_transform.md",
    "chars": 312,
    "preview": "# Changes to PerspectiveTransform #452 #456\n\n* [rarely breaking] PerspectiveTransform has now a `fit_output` parameter,\n"
  },
  {
    "path": "changelogs/0.4.0/20200107_improved_blending.md",
    "chars": 4633,
    "preview": "# More Choices for Image Blending #462 #556\n\nThe available augmenters for alpha-blending of images were\nsignificantly ex"
  },
  {
    "path": "changelogs/0.4.0/20200126_python38.md",
    "chars": 350,
    "preview": "# Support for Python 3.8 #600\n\nThe library is now tested in python 3.8 and compatible with that\nversion. The latest vers"
  },
  {
    "path": "changelogs/0.4.0/added/20190927_unwrapped_bb_aug.md",
    "chars": 2012,
    "preview": "# Unwrapped Bounding Box Augmentation #446 #599\n\n* Added property `coords` to `BoundingBox`. The property returns an `(N"
  },
  {
    "path": "changelogs/0.4.0/added/20191002_unwrapped_ls_aug.md",
    "chars": 832,
    "preview": "# Unwrapped Line String Augmentation #450\n\n* Added internal `_augment_line_strings()` methods to various augmenters.\n  T"
  },
  {
    "path": "changelogs/0.4.0/added/20191013_change_color_temperature.md",
    "chars": 258,
    "preview": "# New Augmenter ChangeColorTemperature #454\n\n* Added augmenter `imgaug.augmenters.color.ChangeColorTemperature`.\n* Added"
  },
  {
    "path": "changelogs/0.4.0/added/20191014_brightness_augmenters.md",
    "chars": 485,
    "preview": "# New brightness augmenters #455\n\n* Added augmenter `imgaug.augmenters.color.WithBrightnessChannels`.\n* Added augmenter "
  },
  {
    "path": "changelogs/0.4.0/added/20191016_dropout2d.md",
    "chars": 459,
    "preview": "# New Dropout Augmenters #458\n\n* Added a new augmenter `Dropout2d`, which drops channels in images with\n  a defineable p"
  },
  {
    "path": "changelogs/0.4.0/added/20191019_colorwise_grayscaling.md",
    "chars": 160,
    "preview": "# Added `RemoveSaturation` #462\n\n* Added `RemoveSaturation`, a shortcut for `MultiplySaturation((0.0, 1.0))`\n  with outp"
  },
  {
    "path": "changelogs/0.4.0/added/20191020_cartoon.md",
    "chars": 203,
    "preview": "# New Augmenter `Cartoon` #463\n\n* Added module `imgaug.augmenters.artistic`.\n* Added function `imgaug.augmenters.artisti"
  },
  {
    "path": "changelogs/0.4.0/added/20191023_mean_shift_blur.md",
    "chars": 165,
    "preview": "# Added Augmenter `MeanShiftBlur` #466\n\n* Added function `imgaug.augmenters.blur.blur_mean_shift_(image)`.\n* Added augme"
  },
  {
    "path": "changelogs/0.4.0/added/20191027_jigsaw.md",
    "chars": 245,
    "preview": "# Jigsaw Augmenter #476 #577\n\n* Added function `imgaug.augmenters.geometric.apply_jigsaw()`.\n* Added function `imgaug.au"
  },
  {
    "path": "changelogs/0.4.0/added/20191101_deterministic_list.md",
    "chars": 242,
    "preview": "# Added DeterministicList #475\n\n* Added `imgaug.parameters.DeterministicList`. Upon a request to generate\n  samples of s"
  },
  {
    "path": "changelogs/0.4.0/added/20191102_autocontrast.md",
    "chars": 202,
    "preview": "# Autocontrast #479\n\n* Added `imgaug.augmenters.pillike.autocontrast()`, a function with identical\n  inputs and outputs "
  },
  {
    "path": "changelogs/0.4.0/added/20191103_affine_shear_y.md",
    "chars": 625,
    "preview": "# Affine Shear on the Y-Axis #482\n\n* [rarely breaking] Extended `Affine` to also support shearing on the\n  y-axis (previ"
  },
  {
    "path": "changelogs/0.4.0/added/20191103_equalize.md",
    "chars": 194,
    "preview": "# Equalize #480\n\n* Added `imgaug.augmenters.pillike.equalize`, similar to\n  `PIL.ImageOps.equalize`.\n* Added `imgaug.aug"
  },
  {
    "path": "changelogs/0.4.0/added/20191103_identity.md",
    "chars": 459,
    "preview": "# Added Identity #481\n\n* [rarely breaking] Added `imgaug.augmenters.meta.Identity`, an alias of\n  `Noop`. `Identity` is "
  },
  {
    "path": "changelogs/0.4.0/added/20191105_affine_wrappers.md",
    "chars": 369,
    "preview": "# Added Wrappers around `Affine` #484\n\n* Added `imgaug.augmenters.geometric.ScaleX`.\n* Added `imgaug.augmenters.geometri"
  },
  {
    "path": "changelogs/0.4.0/added/20191106_ooi_removal.md",
    "chars": 1204,
    "preview": "# Removal of Coordinate-Based Augmentables Outside of the Image Plane #487\n\n* Added `Keypoint.is_out_of_image()`.\n\n* Add"
  },
  {
    "path": "changelogs/0.4.0/added/20191110_bb_polygon_conversion.md",
    "chars": 198,
    "preview": "# Bounding Box to Polygon Conversion #489\n\n* Added method `imgaug.augmentables.bbs.BoundingBox.to_polygon()`.\n* Added me"
  },
  {
    "path": "changelogs/0.4.0/added/20191110_polygon_subdivision.md",
    "chars": 294,
    "preview": "# Added Polygon Subdivision #489\n\n* Added method `imgaug.augmentables.polys.Polygon.subdivide(N)`.\n  The method increase"
  },
  {
    "path": "changelogs/0.4.0/added/20191110_withpolarwarping.md",
    "chars": 186,
    "preview": "# Added `WithPolarWarping` #489\n\n* Added augmenter `imgaug.augmenters.geometric.WithPolarWarping`, an\n  augmenter that a"
  },
  {
    "path": "changelogs/0.4.0/added/20191117_debug_images.md",
    "chars": 718,
    "preview": "# Generate Debug Images #502\n\n* Added module `imgaug.augmenters.debug`.\n* Added function `imgaug.augmenters.debug.draw_d"
  },
  {
    "path": "changelogs/0.4.0/added/20191117_pad_multi_cval.md",
    "chars": 155,
    "preview": "# Multi-Channel cvals in `pad()` #502\n\nImproved `imgaug.augmenters.size.pad()` to support multi-channel values\nfor the `"
  },
  {
    "path": "changelogs/0.4.0/added/20191218_imagecorruptions.md",
    "chars": 2217,
    "preview": "# Added Wrappers for `imagecorruptions` Package #530\n\nAdded wrappers around the functions from package\n[bethgelab/imagec"
  },
  {
    "path": "changelogs/0.4.0/added/20191220_cutout.md",
    "chars": 465,
    "preview": "# Cutout Augmenter #531 #570\n\n* Added `imgaug.augmenters.arithmetic.apply_cutout_()`, which replaces\n  in-place a single"
  },
  {
    "path": "changelogs/0.4.0/added/20191221_inplace_cba_methods.md",
    "chars": 2333,
    "preview": "# Added in-place Methods for Coordinate-based Augmentables #532\n\n* Added `Keypoint.project_()`.\n* Added `Keypoint.shift_"
  },
  {
    "path": "changelogs/0.4.0/added/20191224_pil_module.md",
    "chars": 2356,
    "preview": "# Added Module `imgaug.augmenters.pillike` #479 #480 #538\n\n* Added module `imgaug.augmenters.pillike`, which contains au"
  },
  {
    "path": "changelogs/0.4.0/added/20191230_standardized_lut.md",
    "chars": 329,
    "preview": "# Standardized LUT Methods #542\n\n* Added `imgaug.imgaug.apply_lut()`, which applies a lookup table to an image.\n* Added "
  },
  {
    "path": "changelogs/0.4.0/added/20200101_bb_label_drawing.md",
    "chars": 637,
    "preview": "# Drawing Bounding Box Labels #545\n\nWhen drawing bounding boxes on images via `BoundingBox.draw_on_image()`\nor `Bounding"
  },
  {
    "path": "changelogs/0.4.0/added/20200102_cbasoi_getitem.md",
    "chars": 593,
    "preview": "# Index-based Access to Coordinate-based `*OnImage` Instances #547\n\nEnabled index-based access to coordinate-based `*OnI"
  },
  {
    "path": "changelogs/0.4.0/added/20200105_discretize_round.md",
    "chars": 204,
    "preview": "# Added `round` Parameter to `Discretize` #553\n\nAdded the parameter `round` to `imgaug.parameters.Discretize`. The param"
  },
  {
    "path": "changelogs/0.4.0/added/20200106_rain.md",
    "chars": 241,
    "preview": "# Added Rain Augmenters #551\n\nAdded augmenter(s) to create fake rain effects. They currently seem to work\nbest at around"
  },
  {
    "path": "changelogs/0.4.0/added/20200106_randaugment.md",
    "chars": 290,
    "preview": "# Add RandAugment #553\n\nAdded a RandAugment augmenter, similar to the one described in the paper\n\"RandAugment: Practical"
  },
  {
    "path": "changelogs/0.4.0/added/20200125_image_warnings.md",
    "chars": 1283,
    "preview": "# Improved Warnings on Probably-Wrong Image Inputs #594\n\nImproved the errors and warnings on image augmentation calls.\n`"
  },
  {
    "path": "changelogs/0.4.0/changed/20190929_rngs_polygon_recoverer.md",
    "chars": 320,
    "preview": "# Improved RNG Handling during Polygon Augmentation #447\n\n* Changed `Augmenter.augment_polygons()` to copy the augmenter"
  },
  {
    "path": "changelogs/0.4.0/changed/20191110_affine_translation_precision.md",
    "chars": 211,
    "preview": "# Affine Translation Precision #489\n\n* Removed a rounding operation in `Affine` translation that would unnecessarily\n  r"
  },
  {
    "path": "changelogs/0.4.0/changed/20191128_affine_translate.md",
    "chars": 340,
    "preview": "# `Affine.get_parameters()` and `translate_px`/`translate_percent` #508\n\n* Changed `Affine.get_parameters()` to always r"
  },
  {
    "path": "changelogs/0.4.0/changed/20191230_dont_import_msgs.md",
    "chars": 561,
    "preview": "# Removed Outdated \"Don't Import from this Module\" Messages #539\n\nThe docstring of each module in ``imgaug.augmenters`` "
  },
  {
    "path": "changelogs/0.4.0/changed/20200103_standardized_shift_interfaces.md",
    "chars": 1644,
    "preview": "# Standardized `shift()` Interfaces of Coordinate-Based Augmentables #548\n\nThe interfaces for shift operations of all co"
  },
  {
    "path": "changelogs/0.4.0/changed/20200112_simplified_augmenter_args.md",
    "chars": 1656,
    "preview": "# Simplified Standard Parameters of Augmenters #567 #595\n\nChanged the standard parameters shared by all augmenters to a\n"
  },
  {
    "path": "changelogs/0.4.0/changed/20200115_changed_defaults.md",
    "chars": 7748,
    "preview": "# Improved Default Values of Augmenters #582\n\n**[breaking]** Most augmenters had previously default values that\nmade the"
  },
  {
    "path": "changelogs/0.4.0/changed/20200125_any_opencv_accepted.md",
    "chars": 515,
    "preview": "# `setup.py` Now Accepts Any `opencv-*` Installation #586\n\n`setup.py` was changed so that it now accepts `opencv-python`"
  },
  {
    "path": "changelogs/0.4.0/deprecated/20190926_rename_inplace.md",
    "chars": 195,
    "preview": "* Deprecated method `Augmenter.reseed()`.\n  Use `Augmenter.seed_()` instead. #444\n* Deprecated method `Augmenter.remove_"
  },
  {
    "path": "changelogs/0.4.0/deprecated/20191230_deprecate_affinecv2.md",
    "chars": 314,
    "preview": "# Deprecated AffineCv2 in Favor of Affine #540\n\nThe augmenter `imgaug.augmenters.geometric.AffineCv2` was not properly\nm"
  },
  {
    "path": "changelogs/0.4.0/fixed/20190926_fixed_resize_dtype.md",
    "chars": 174,
    "preview": "* Fixed `Resize` always returning an `uint8` array during image augmentation\n  if the input was a single numpy array and"
  },
  {
    "path": "changelogs/0.4.0/fixed/20190928_fixed_affine_coords_aug.md",
    "chars": 181,
    "preview": "* Fixed `Affine` coordinate-based augmentation applying wrong offset\n  when shifting images to/from top-left corner. Thi"
  },
  {
    "path": "changelogs/0.4.0/fixed/20190928_fixed_pwa_empty_kps_unaligned.md",
    "chars": 143,
    "preview": "* Fixed keypoint augmentation in `PiecewiseAffine` potentially being\n  unaligned if a `KeypointsOnImage` instance contai"
  },
  {
    "path": "changelogs/0.4.0/fixed/20190928_fixed_type_val.md",
    "chars": 141,
    "preview": "* Fixed `imgaug.validation.convert_iterable_to_string_of_types()` crashing due\n  to not converting types to strings befo"
  },
  {
    "path": "changelogs/0.4.0/fixed/20190929_fixed_assert_is_iterable_of.md",
    "chars": 129,
    "preview": "* Fixed `imgaug.validation.assert_is_iterable_of()` producing a not\n  well-designed error if the input was not an iterab"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191003_fixed_image_normalization.md",
    "chars": 345,
    "preview": "* Fixed image normalization crashing when an input ndarray of multiple images\n  was changed during augmentation to a lis"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191003_fixed_typo.md",
    "chars": 42,
    "preview": "* Fixed typo in image normalization. #451\n"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191006_fixed_withchannels_alignment.md",
    "chars": 161,
    "preview": "* Fixed a problem in `WithChannels` that could lead random sampling in child\n  augmenters being unaligned between images"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191106_fixed_random_state_funcs_missing.md",
    "chars": 399,
    "preview": "# Fixed Missing RandomState Methods #486\n\n* Added aliases to `imgaug.random.RNG` for some outdated numpy random number\n "
  },
  {
    "path": "changelogs/0.4.0/fixed/20191110_fixed_affine_map_aug.md",
    "chars": 266,
    "preview": "# Fixed Affine Translation of Map-Data #489\n\n* Fixed `Affine` producing unaligned augmentations between images and\n  seg"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191111_fixed_snowflakeslayer_crash.md",
    "chars": 145,
    "preview": "# Fixed `SnowflakesLayer` crash #471\n\n* Fixed a crash in `SnowflakesLayer` that could occur when using values\n  close to"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191111_multiplyhueandsaturation_rng.md",
    "chars": 169,
    "preview": "# Fixed `MultiplyHueAndSaturation` RNG #493\n\n* Fixed `MultiplyHueAndSaturation` crashing if the RNG provided via\n  `rand"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191124_fixed_cloud_layer_float.md",
    "chars": 114,
    "preview": "* Fixed `CloudLayer.draw_on_image()` producing tuples instead of arrays\n  as output for `float` input images. #540"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191128_fixed_affine_translate.md",
    "chars": 317,
    "preview": "# `Affine` Translate Type Falsely dependent on float/int Samples #508\n\n* Fixed `Affine` parameter `translate_px` behavin"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191128_fixed_hanging_nixos.md",
    "chars": 120,
    "preview": "# Fixed Hanging Code in NixOS #414 #510\n\n* Fixed code hanging indefinitely when using multicore augmentation\n  on NixOS."
  },
  {
    "path": "changelogs/0.4.0/fixed/20191217_collections_abc.md",
    "chars": 175,
    "preview": "# Fixed Abstract Base Classes Import #527\n\n* Fixed a deprecation warning and potential crash in python 3.8\n  related to "
  },
  {
    "path": "changelogs/0.4.0/fixed/20191218_fixed_fromfunction_deprecated.md",
    "chars": 102,
    "preview": "# Fixed `scipy.fromfunction` Deprecated #529\n\n* Fixed deprecated `scipy.fromfunction()` being called.\n"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191222_fixed_numpy_1_18.md",
    "chars": 286,
    "preview": "# Fixed crashes in numpy 1.18 #534\n\n* Fixed `imgaug.random.normalize_generator()` crashing in numpy 1.18.\n  The function"
  },
  {
    "path": "changelogs/0.4.0/fixed/20191223_fixed_opencv_multicore_aug_hanging.md",
    "chars": 212,
    "preview": "# Fixed OpenCV Hanging in Multicore Augmentation #535\n\n* Fixed an issue that could lead to endlessly hanging programs on"
  },
  {
    "path": "changelogs/0.4.0/fixed/20200110_fixed_seed.md",
    "chars": 392,
    "preview": "# Fixed `random.seed` not always seeding in-place #557\n\nFixed `imgaug.random.seed()` not seeding the global `RNG` in-pla"
  },
  {
    "path": "changelogs/0.4.0/fixed/20200111_fixed_elastic_transformation_cval.md",
    "chars": 198,
    "preview": "# Fixed `cval` in `ElasticTransformation` #561 #562\n\n* Fixed `cval` in `ElasticTransformation` resulting new pixels in R"
  },
  {
    "path": "changelogs/0.4.0/fixed/20200113_fixed_weather_randomness.md",
    "chars": 151,
    "preview": "* Fixed some augmenters in module `weather` not transferring seed values\n  or random states that were provided upon crea"
  },
  {
    "path": "changelogs/0.4.0/fixed/20200118_perspt_inaccuracy.md",
    "chars": 324,
    "preview": "* Fixed an inaccuracy in `PerspectiveTransform` that could lead to slightly\n  misaligned transformations between images "
  },
  {
    "path": "changelogs/0.4.0/fixed/20200122_fix_keepsizebyresize.md",
    "chars": 172,
    "preview": "* Fixed `KeepSizeByResize` potentially crashing if a single numpy array\n  was provided as the input for an iterable of i"
  },
  {
    "path": "changelogs/0.4.0/fixed/20200126_shapely_17a2.md",
    "chars": 155,
    "preview": "* Fixed an issue in Shapely 1.7a2 (python 3.8) that could lead to\n  a crash in `LineString.find_intersections_with()` if"
  },
  {
    "path": "changelogs/0.4.0/refactored/20191124_pylint.md",
    "chars": 276,
    "preview": "# Refactored according to pylint requirements\n\n* Refactored all core library files to fulfill (most) pylint requirements"
  },
  {
    "path": "changelogs/0.4.0/refactored/20200111_opencv_normalization.md",
    "chars": 181,
    "preview": "# Unified OpenCV Input Normalization #565\n\n* Refactored various augmenters to use the same normalization for OpenCV\n  in"
  },
  {
    "path": "changelogs/0.4.0/renamed/20190926_rename_inplace.md",
    "chars": 153,
    "preview": "* Renamed `Augmenter.reseed()` to `Augmenter.seed_()`. #444\n* Renamed `Augmenter.remove_augmenters_inplace()` to\n  `Augm"
  },
  {
    "path": "changelogs/master/20200206_data_module.md",
    "chars": 1265,
    "preview": "# Add New `data` Module #606\n\nThis patch moves the example data functions from `imgaug.imgaug` to\nthe new module `imgaug"
  },
  {
    "path": "changelogs/master/changed/20200222_shape_handling.md",
    "chars": 1441,
    "preview": "# Stricter Shape Handling in Augmentables #623\n\nVarious methods of augmentables have so far accepted tuples\nof integers "
  },
  {
    "path": "changelogs/master/changed/20200522_limit_dtype_support_alphablend.md",
    "chars": 378,
    "preview": "# Limit dtype Support in Alpha Blending in Windows #678\n\nThis patch marks the dtypes uint64, int64 and float64\nas 'only "
  },
  {
    "path": "changelogs/master/fixed/20200217_legacy_kp_aug_fallback.md",
    "chars": 205,
    "preview": "* Fix legacy augmenters (i.e. no `_augment_batch_()`\n  implemented) not automatically falling back to\n  `_augment_keypoi"
  },
  {
    "path": "changelogs/master/fixed/20200225_fix_imageio.md",
    "chars": 233,
    "preview": "* Fixed a broken `imageio` dependency. The package no longer\n  supports python 3.4 and earlier and will fail to install "
  },
  {
    "path": "changelogs/master/fixed/20200412_fix_change_color_temperature.md",
    "chars": 119,
    "preview": "* Fixed `change_color_temperatures_()` crashing on batches\n  that did not contain exactly `1` or `3` images. #646 #650\n"
  },
  {
    "path": "changelogs/master/fixed/20200521_fix_skimage_slic_warning.md",
    "chars": 64,
    "preview": "- Fixed an `skimage` deprecation warning in `Superpixels`. #672\n"
  },
  {
    "path": "changelogs/master/fixed/20200522_fix_blend_alpha_f128.md",
    "chars": 158,
    "preview": "- A problem was fixed that led to `blend_alpha()`\n  always producing assertion errors if the dtype\n  `float128` was not "
  },
  {
    "path": "changelogs/master/fixed/20200522_fix_mac_multiprocessing.md",
    "chars": 293,
    "preview": "- Fixed an error on MacOS in python 3.7 that could appear\n  when using multicore augmentation. The library will now\n  us"
  },
  {
    "path": "changelogs/master/fixed/20200522_fix_pad_f128.md",
    "chars": 130,
    "preview": "- A problem was fixed that led to `pad()` always crashing\n  if the dtype `float128` was not available on the given\n  sys"
  },
  {
    "path": "changelogs/master/fixed/20200522_fix_permission_denied.md",
    "chars": 118,
    "preview": "- Fixed a `permission denied` error when calling\n  `StochasticParameter.draw_distribution_graph()` in\n  Windows. #678\n"
  },
  {
    "path": "changelogs/master/fixed/20200525_fix_affine_cval_float.md",
    "chars": 185,
    "preview": "- Fixed `Affine` casting float cvals to int, even when\n  the image had a float dtype, making it impossible to\n  properly"
  },
  {
    "path": "changelogs/master/fixed/20200601_fix_affine_skimage_order_0.md",
    "chars": 120,
    "preview": "- Fixed a deprecation warning in `Affine` that would\n  be caused when providing boolean images and\n  `order != 0`. #685\n"
  },
  {
    "path": "changelogs/master/improved/20200211_improve_performance_add.md",
    "chars": 442,
    "preview": "# Improve Performance of `Add` #608\n\nThis patch improves the performance of\n`imgaug.arithmetic.add_scalar()`\nand the cor"
  },
  {
    "path": "changelogs/master/improved/20200213_improved_blend_performance.md",
    "chars": 622,
    "preview": "# Improve Performance of Alpha-Blending #610\n\nThis patch reworks `imgaug.augmenters.blend.blend_alpha()` to\nimprove its "
  },
  {
    "path": "changelogs/master/improved/20200216_add_elementwise_performance.md",
    "chars": 416,
    "preview": "# Improve Performance of Elementwise Addition #612\n\nThis patch improves the performance of\n`imgaug.augmenters.arithmetic"
  },
  {
    "path": "changelogs/master/improved/20200216_improve_multiply_scalar_perf.md",
    "chars": 362,
    "preview": "# Improve Performance of `multiply_scalar()` #614\n\nThis patch improves the performance of\n`imgaug.augmenters.arithmetic."
  },
  {
    "path": "changelogs/master/improved/20200216_improved_mul_elementwise_perf.md",
    "chars": 444,
    "preview": "# Improve Performance of Elementwise Multiplication #615\n\nThis patch improves the performance of\n`imgaug.augmenters.arit"
  },
  {
    "path": "changelogs/master/improved/20200217_vectorize_cropandpad.md",
    "chars": 389,
    "preview": "# Vectorize `CropAndPad` #619\n\nThis patch vectorizes parts of `CropAndPad`, especially the\nsampling process, leading to "
  },
  {
    "path": "changelogs/master/improved/20200221_reworked_pooling.md",
    "chars": 1089,
    "preview": "# Improved Performance of Pooling Operations #622\n\nThis patch improves the performance of pooling operations.\n\nFor `uint"
  },
  {
    "path": "changelogs/master/improved/20200223_blur_avg.md",
    "chars": 503,
    "preview": "# Improved Average Bluring #625\n\nThis patch adds `imgaug.augmenters.blur.blur_avg_()`,\nwhich applies an averaging blur k"
  },
  {
    "path": "changelogs/master/improved/20200223_faster_elastic_tf.md",
    "chars": 868,
    "preview": "# Improved Performance of `ElasticTransformation` #624\n\nThis patch applies various performance-related changes to\n`Elast"
  },
  {
    "path": "changelogs/master/improved/20200229_convolve.md",
    "chars": 639,
    "preview": "# Improved Convolution Filters #632\n\nThis patch reworks the backend of all convolutional\nfilters. It extracts the convol"
  },
  {
    "path": "changelogs/master/improved/20200229_faster_invert.md",
    "chars": 619,
    "preview": "# Improved Performance of `invert_()` #631\n\nThis patch improves the performance of\n`imgaug.augmenters.arithmetic.invert_"
  },
  {
    "path": "changelogs/master/improved/20200308_prefetching.md",
    "chars": 1925,
    "preview": "# Added Automatic Prefetching of Random Number Samples #634\n\nThis patch adds automatic prefetching of random samples,\nwh"
  },
  {
    "path": "changelogs/master/improved/20200315_segment_replacement.md",
    "chars": 658,
    "preview": "# Improved Performance of Segment Replacement #640 #684\n\nThis patch improves the performance of segment\nreplacement (by "
  },
  {
    "path": "changelogs/master/improved/20200413_frequency_noise.md",
    "chars": 268,
    "preview": "# Improve Performance of `FrequencyNoise` #651\n\nThis patch improves the performance of\n`imgaug.parameters.FrequencyNoise"
  },
  {
    "path": "changelogs/master/improved/20200517_faster_dtype_checks.md",
    "chars": 416,
    "preview": "# Improved Performance of dtype checks #663\n\nThis patch improves the performance of dtype checks\nthroughout the library."
  },
  {
    "path": "changelogs/master/improved/20200521_improved_cicd_testing.md",
    "chars": 485,
    "preview": "# Improved CI/CD Testing #670 #678\n\nThis patch improves the CI/CD environment by adding\ngithub actions. The library is n"
  },
  {
    "path": "changelogs/master/improved/20200522_tests_f128.md",
    "chars": 183,
    "preview": "# Removed Requirement of float128 Support from Tests #677\n\nThis patch modifies all tests so that they can be run on\nsyst"
  },
  {
    "path": "changelogs/master/improved/20200530_glass_blur_perf.md",
    "chars": 345,
    "preview": "# Improved Performance of Glass Blur #683 #684\n\nThis patch improves the performance of\n`imgaug.augmenters.imgcorruptplik"
  },
  {
    "path": "changelogs/master/refactored/20200223_blur_gaussian.md",
    "chars": 180,
    "preview": "# Refactored `blur_gaussian_()` #626\n\nThis patch cleans up the code of\n`imgaug.augmenters.blur.blur_gaussian_()`. A very"
  },
  {
    "path": "changelogs/master/refactored/20200314_affine.md",
    "chars": 534,
    "preview": "# Refactored Affine #639\n\nThis patch refactors affine to make the code more\nreadable and change the matrix generation ro"
  },
  {
    "path": "changelogs/v0.2.8.summary.md",
    "chars": 16065,
    "preview": "# 0.2.8\n\nThis update focused on extending and documenting the library's dtype support, improving the performance and rew"
  },
  {
    "path": "changelogs/v0.2.9.summary.md",
    "chars": 18258,
    "preview": "# 0.2.9\n\nThis update mainly covers the following topics:\n* Moved classes/methods related to augmentable data to their ow"
  },
  {
    "path": "changelogs/v0.3.0.summary.md",
    "chars": 23619,
    "preview": "# 0.3.0 - Summary Of Changes\n\n## Improved Segmentation Map Augmentation (#302)\n\nThe segmentation map augmentation was pr"
  },
  {
    "path": "changelogs/v0.4.0.summary.md",
    "chars": 83040,
    "preview": "# Table of Contents\n\n1. [Overview](#overview)\n2. [Example Images](#example_images)\n3. [Mixed-Category Patches](#mixed_ca"
  },
  {
    "path": "checks/README.md",
    "chars": 176,
    "preview": "These are checks for the library.\nIn contrast to tests they are expected to be executed by hand.\nTheir results have to b"
  },
  {
    "path": "checks/check_add_to_hue_and_saturation.py",
    "chars": 1224,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\nfrom skimage import data\nimport cv2\n\nimport imgaug a"
  },
  {
    "path": "checks/check_affine.py",
    "chars": 4718,
    "preview": "from __future__ import print_function, division\n\nimport imageio\nimport numpy as np\nfrom skimage import data\n\nimport imga"
  },
  {
    "path": "checks/check_affinecv2.py",
    "chars": 3686,
    "preview": "from __future__ import print_function, division\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\nimport imageio\n"
  },
  {
    "path": "checks/check_average_blur.py",
    "chars": 1235,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\nfrom skimage import data\nimport cv2\n\nimport imgaug a"
  },
  {
    "path": "checks/check_background_augmentation.py",
    "chars": 10550,
    "preview": "from __future__ import print_function, division\n\nimport time\n\nimport numpy as np\nfrom skimage import data\n\nimport imgaug"
  },
  {
    "path": "checks/check_bb_augmentation.py",
    "chars": 1595,
    "preview": "from __future__ import print_function, division\n\nimport imageio\nimport numpy as np\nfrom skimage import data\n\nimport imga"
  },
  {
    "path": "checks/check_bilateral_blur.py",
    "chars": 1612,
    "preview": "from __future__ import print_function, division\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\nimport numpy as"
  },
  {
    "path": "checks/check_blendalphasegmapclassids.py",
    "chars": 946,
    "preview": "from __future__ import print_function, division, absolute_import\nimport imageio\nimport imgaug as ia\nimport imgaug.augmen"
  },
  {
    "path": "checks/check_blendalphasomecolors.py",
    "chars": 1575,
    "preview": "from __future__ import print_function, division, absolute_import\nimport imageio\nimport imgaug as ia\nimport imgaug.augmen"
  },
  {
    "path": "checks/check_brightness.py",
    "chars": 1267,
    "preview": "from __future__ import print_function, division\nimport numpy as np\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n\n"
  },
  {
    "path": "checks/check_canny.py",
    "chars": 1281,
    "preview": "from __future__ import print_function, division\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n\n\ndef main():\n    bl"
  },
  {
    "path": "checks/check_cartoon.py",
    "chars": 3583,
    "preview": "import imgaug as ia\nimport imgaug.augmenters as iaa\nimport imageio\nimport cv2\nimport numpy as np\n\n\ndef main():\n    urls_"
  },
  {
    "path": "checks/check_channel_shuffle.py",
    "chars": 1014,
    "preview": "from imgaug import augmenters as iaa\nimport imgaug as ia\nimport imgaug.random as iarandom\n\niarandom.seed(1)\n\n\ndef main()"
  },
  {
    "path": "checks/check_clouds.py",
    "chars": 692,
    "preview": "from __future__ import print_function, division\n\nimport imageio\n\nimport imgaug as ia\nfrom imgaug import augmenters as ia"
  },
  {
    "path": "checks/check_color_temperature.py",
    "chars": 388,
    "preview": "from __future__ import print_function, division\nimport numpy as np\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n\n"
  },
  {
    "path": "checks/check_contrast.py",
    "chars": 2662,
    "preview": "from __future__ import print_function, division\nimport argparse\n\nimport numpy as np\nfrom skimage import data\n\nimport img"
  },
  {
    "path": "checks/check_crop_and_pad.py",
    "chars": 3674,
    "preview": "from __future__ import print_function, division\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\nfrom imgaug imp"
  },
  {
    "path": "checks/check_cutout.py",
    "chars": 413,
    "preview": "from __future__ import print_function, division, absolute_import\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n\n\nd"
  },
  {
    "path": "checks/check_deprecation_warning.py",
    "chars": 685,
    "preview": "from __future__ import print_function, absolute_import, division\n\nimport imgaug as ia\n\n\nclass Dummy1(object):\n    @ia.de"
  },
  {
    "path": "checks/check_directed_edge_detect.py",
    "chars": 1111,
    "preview": "from __future__ import print_function, division\nfrom itertools import cycle\n\nimport numpy as np\nfrom skimage import data"
  },
  {
    "path": "checks/check_elastic_transformation.py",
    "chars": 15010,
    "preview": "from __future__ import print_function, division\n\nimport imageio\nimport numpy as np\nimport six.moves as sm\nfrom skimage i"
  },
  {
    "path": "checks/check_fast_snowy_landscape.py",
    "chars": 1271,
    "preview": "from __future__ import print_function, division\n\nimport imageio\n\nimport imgaug as ia\nfrom imgaug import augmenters as ia"
  },
  {
    "path": "checks/check_fixed_size.py",
    "chars": 3450,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nfrom imgaug import augmenters a"
  },
  {
    "path": "checks/check_flip_performance.py",
    "chars": 6962,
    "preview": "from __future__ import print_function, division\nimport timeit\nimport argparse\nimport numpy as np\n\nCOMMANDS_HORIZONTAL_FL"
  },
  {
    "path": "checks/check_fog.py",
    "chars": 686,
    "preview": "from __future__ import print_function, division\n\nimport imageio\n\nimport imgaug as ia\nfrom imgaug import augmenters as ia"
  },
  {
    "path": "checks/check_heatmaps.py",
    "chars": 5622,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nfrom imgaug import augmenters a"
  },
  {
    "path": "checks/check_impulse_noise.py",
    "chars": 810,
    "preview": "from __future__ import print_function, division\n\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\n\n\ndef main():\n"
  },
  {
    "path": "checks/check_imshow.py",
    "chars": 387,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\n\n\ndef main():\n    image = ia.da"
  },
  {
    "path": "checks/check_jigsaw.py",
    "chars": 1078,
    "preview": "from __future__ import print_function, division, absolute_import\nimport imgaug as ia\nimport imgaug.augmenters as iaa\nimp"
  },
  {
    "path": "checks/check_jpeg_compression.py",
    "chars": 1040,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nfrom imgaug import augmenters a"
  },
  {
    "path": "checks/check_kmeans_color_quantization.py",
    "chars": 833,
    "preview": "from __future__ import print_function, division\nimport numpy as np\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n\n"
  },
  {
    "path": "checks/check_laplace_noise.py",
    "chars": 1187,
    "preview": "from __future__ import print_function, division\n\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\n\n\ndef main():\n"
  },
  {
    "path": "checks/check_mean_shift_blur.py",
    "chars": 324,
    "preview": "from __future__ import print_function, division, absolute_import\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n\n\nd"
  },
  {
    "path": "checks/check_median_blur.py",
    "chars": 1146,
    "preview": "from __future__ import print_function, division\n\nimport cv2\nimport numpy as np\nfrom skimage import data\n\nimport imgaug a"
  },
  {
    "path": "checks/check_motion_blur.py",
    "chars": 1459,
    "preview": "from __future__ import print_function, division\nfrom itertools import cycle\n\nimport numpy as np\nimport cv2\n\nimport imgau"
  },
  {
    "path": "checks/check_multicore_pool.py",
    "chars": 13915,
    "preview": "from __future__ import print_function, division\n\nimport time\nimport multiprocessing\n\nimport numpy as np\nfrom skimage imp"
  },
  {
    "path": "checks/check_multiply_hue_and_saturation.py",
    "chars": 1078,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nfrom imgaug import augmenters a"
  },
  {
    "path": "checks/check_noise.py",
    "chars": 2565,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nfrom imgaug import augmenters a"
  },
  {
    "path": "checks/check_parameters.py",
    "chars": 3985,
    "preview": "from __future__ import print_function, division\nimport imgaug as ia\n# TODO ForceSign\nfrom imgaug.parameters import (\n   "
  },
  {
    "path": "checks/check_performance.py",
    "chars": 14661,
    "preview": "\"\"\"\nTests to measure the performance of each augmenter.\nRun these checks from the project directory (i.e. parent directo"
  },
  {
    "path": "checks/check_perspective_transform.py",
    "chars": 1808,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nfrom imgaug import augmenters a"
  },
  {
    "path": "checks/check_piecewise_affine.py",
    "chars": 2347,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nimport imgaug.random as iarando"
  },
  {
    "path": "checks/check_poisson_noise.py",
    "chars": 943,
    "preview": "from __future__ import print_function, division\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\n\n\ndef main():\n "
  },
  {
    "path": "checks/check_polygons_stay_valid_during_augmentation.py",
    "chars": 1729,
    "preview": "from __future__ import print_function, division\nimport numpy as np\n\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n"
  },
  {
    "path": "checks/check_pooling.py",
    "chars": 837,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nimport imgaug.augmenters as iaa"
  },
  {
    "path": "checks/check_quantize_uniform_to_n_bits.py",
    "chars": 1674,
    "preview": "from __future__ import print_function, division, absolute_import\nimport imgaug.augmenters as iaa\nimport imgaug as ia\nimp"
  },
  {
    "path": "checks/check_rain.py",
    "chars": 711,
    "preview": "from __future__ import print_function, division, absolute_import\n\nimport imageio\n\nimport imgaug as ia\nfrom imgaug import"
  },
  {
    "path": "checks/check_randaugment.py",
    "chars": 825,
    "preview": "from __future__ import print_function, division, absolute_import\n\nimport numpy as np\n\nimport imgaug as ia\nimport imgaug."
  },
  {
    "path": "checks/check_readme_examples.py",
    "chars": 19103,
    "preview": "\"\"\"\nScript to verify all examples in the readme.\nSimply execute\n    python test_readme_examples.py\n\n\nThe tests in this f"
  },
  {
    "path": "checks/check_remove_saturation.py",
    "chars": 1174,
    "preview": "import imgaug as ia\nimport imgaug.augmenters as iaa\nimport imageio\n\n\ndef main():\n    urls = [\n        (\"https://upload.w"
  },
  {
    "path": "checks/check_resize.py",
    "chars": 3278,
    "preview": "from __future__ import print_function, division\n\nimport cv2\nimport numpy as np\nfrom skimage import data\n\nimport imgaug a"
  },
  {
    "path": "checks/check_rot90.py",
    "chars": 2646,
    "preview": "from __future__ import print_function, division\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\n\n\ndef main():\n "
  },
  {
    "path": "checks/check_seed.py",
    "chars": 956,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\nfrom skimage import data\n\nimport imgaug as ia\nimport"
  },
  {
    "path": "checks/check_segmentation_maps.py",
    "chars": 5521,
    "preview": "from __future__ import print_function\n\nimport numpy as np\n\nimport imgaug as ia\nfrom imgaug import augmenters as iaa\n\n\nde"
  },
  {
    "path": "checks/check_single_image_warning.py",
    "chars": 955,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nfrom imgaug import augmenters as iaa\n\n\ndef main():\n"
  },
  {
    "path": "checks/check_snowflakes.py",
    "chars": 700,
    "preview": "from __future__ import print_function, division\n\nimport imageio\n\nimport imgaug as ia\nfrom imgaug import augmenters as ia"
  },
  {
    "path": "checks/check_snowflakes_layer.py",
    "chars": 750,
    "preview": "from __future__ import print_function, division\n\nimport imageio\n\nimport imgaug as ia\nfrom imgaug import augmenters as ia"
  },
  {
    "path": "checks/check_solarize.py",
    "chars": 1355,
    "preview": "from __future__ import print_function, division, absolute_import\nimport imgaug as ia\nimport imgaug.augmenters as iaa\nimp"
  },
  {
    "path": "checks/check_some_of.py",
    "chars": 3404,
    "preview": "from __future__ import print_function, division\n\nimport cv2\nimport numpy as np\nfrom skimage import data\n\nimport imgaug a"
  },
  {
    "path": "checks/check_superpixels.py",
    "chars": 946,
    "preview": "from __future__ import print_function, division\n\nimport time\nfrom itertools import cycle\n\nimport cv2\nimport numpy as np\n"
  },
  {
    "path": "checks/check_uniform_color_quantization.py",
    "chars": 646,
    "preview": "from __future__ import print_function, division\nimport numpy as np\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n\n"
  },
  {
    "path": "checks/check_visually.py",
    "chars": 8145,
    "preview": "\"\"\"\nTests to visually inspect the results of the library's functionality.\nRun checks via\n    python check_visually.py\n\"\""
  },
  {
    "path": "checks/check_voronoi.py",
    "chars": 1076,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\n\nimport imgaug as ia\nimport imgaug.augmenters as iaa"
  },
  {
    "path": "checks/check_with_hue_and_saturation.py",
    "chars": 557,
    "preview": "from __future__ import print_function, division\nimport imgaug as ia\nimport imgaug.augmenters as iaa\n\n\ndef main():\n    im"
  },
  {
    "path": "checks/check_withchannels.py",
    "chars": 1391,
    "preview": "from __future__ import print_function, division\n\nimport cv2\nimport numpy as np\nfrom skimage import data\n\nimport imgaug a"
  },
  {
    "path": "checks/check_withcolorspace.py",
    "chars": 633,
    "preview": "from __future__ import print_function, division\n\nimport numpy as np\nfrom skimage import data\n\nimport imgaug as ia\nfrom i"
  },
  {
    "path": "codecov.yml",
    "chars": 1241,
    "preview": "#see https://github.com/codecov/support/wiki/Codecov-Yaml\ncodecov:\n  notify:\n    require_ci_to_pass: yes\n\ncoverage:\n  pr"
  },
  {
    "path": "imgaug/__init__.py",
    "chars": 583,
    "preview": "\"\"\"Imports for package imgaug.\"\"\"\nfrom __future__ import absolute_import\n\n# this contains some deprecated classes/functi"
  }
]

// ... and 90 more files (download for full content)

About this extraction

This page contains the full source code of the aleju/imgaug GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 290 files (6.1 MB), approximately 1.6M tokens, and a symbol index with 8828 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!