BlurGenerator


NameBlurGenerator JSON
Version 1.1.0 PyPI version JSON
download
home_pagehttps://github.com/NatLee/Blur-Generator
SummaryFast generate blur image.
upload_time2024-05-16 08:48:50
maintainerNone
docs_urlNone
authorNat Lee
requires_python>=3.7
licenseNone
keywords blur generator blur-image cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Blur Generator

[![PyPI pyversions](https://img.shields.io/pypi/pyversions/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)[![PyPI implementation](https://img.shields.io/pypi/implementation/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)

[![Test](https://github.com/NatLee/Blur-Generator/actions/workflows/test.yml/badge.svg)](https://github.com/NatLee/Blur-Generator/actions/workflows/test.yml)[![Release](https://github.com/NatLee/Blur-Generator/actions/workflows/release.yml/badge.svg)](https://github.com/NatLee/Blur-Generator/actions/workflows/release.yml)

[![PyPI status](https://img.shields.io/pypi/status/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)[![PyPI license](https://img.shields.io/pypi/l/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)

[![PyPI version fury.io](https://badge.fury.io/py/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)

[![PyPI download month](https://img.shields.io/pypi/dm/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)[![PyPI download week](https://img.shields.io/pypi/dw/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)[![PyPI download day](https://img.shields.io/pypi/dd/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)

[![forthebadge made-with-python](http://ForTheBadge.com/images/badges/made-with-python.svg)](https://www.python.org/)

This tool is for generating blur on images.

There are 3 types of blur modes of `motion`, `lens`, or `gaussian`.

We can use the results on model training or something else.

> You can find a simply use case with deep learning in https://github.com/NatLee/simply-blur-detector

## Installation

```bash
pip install blurgenerator
```

Check it on [Pypi](https://pypi.org/project/BlurGenerator/).

## Usage

```bash
blurgenerator --help
```

```bash
usage: blurgenerator [-h] [--input INPUT] [--input_depth_map INPUT_DEPTH_MAP] [--output OUTPUT] [--type TYPE] [--motion_blur_size MOTION_BLUR_SIZE] [--motion_blur_angle MOTION_BLUR_ANGLE] [--lens_radius LENS_RADIUS] [--lens_components LENS_COMPONENTS]
                     [--lens_exposure_gamma LENS_EXPOSURE_GAMMA] [--gaussian_kernel GAUSSIAN_KERNEL] [--depth_num_layers DEPTH_NUM_LAYERS] [--depth_min_blur DEPTH_MIN_BLUR] [--depth_max_blur DEPTH_MAX_BLUR]
                        Size for motion blur. Default is 100.
  --motion_blur_angle MOTION_BLUR_ANGLE
                        Angle for motion blur. Default is 30.
  --lens_radius LENS_RADIUS
                        Radius for lens blur. Default is 5.0.
  --lens_components LENS_COMPONENTS
                        Components for lens blur. Default is 4.
  --lens_exposure_gamma LENS_EXPOSURE_GAMMA
                        Exposure gamma for lens blur. Default is 2.
  --gaussian_kernel GAUSSIAN_KERNEL
                        Kernel for gaussian. Default is 100.
  --depth_num_layers DEPTH_NUM_LAYERS
                        Layer for depth blur. Default is 3.
  --depth_min_blur DEPTH_MIN_BLUR
                        Min. blur for depth blur. Default is 1.
  --depth_max_blur DEPTH_MAX_BLUR
                        Max. blur for depth blur. Default is 100.
```

## Example and Result

### Common use

- Original image

![original image](https://github.com/NatLee/Blur-Generator/raw/main/doc/test.png)

#### Usage

- Motion blur

`blurgenerator --type motion --input ./doc/test.png --output ./doc/motion.png`

```python
import cv2
from blurgenerator import motion_blur
img = cv2.imread('test.png')
result = motion_blur(img, size=100, angle=30)
cv2.imwrite('./output.png', result)
```

![motion blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/motion.png)

- Lens blur

`blurgenerator --type lens --input ./doc/test.png --output ./doc/lens.png`

```python
import cv2
from blurgenerator import lens_blur
img = cv2.imread('test.png')
result = lens_blur(img, radius=5, components=4, exposure_gamma=2)
cv2.imwrite('./output.png', result)
```

![lens blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/lens.png)

- Gaussian blur

`blurgenerator --type gaussian --input ./doc/test.png --output ./doc/gaussian.png`

```python
import cv2
from blurgenerator import gaussian_blur
img = cv2.imread('test.png')
result = gaussian_blur(img, 100)
cv2.imwrite('./output.png', result)
```

![gaussian blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/gaussian.png)

### With depth map

Feature from this [issue](https://github.com/NatLee/Blur-Generator/issues/1).

- Original image

![photo](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-test.jpg)

- Depth map

![depth map](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-map-test.png)

#### Usage

- Motion blur with depth map

`blurgenerator --input .\doc\depth-test.jpg --type motion --input_depth_map .\doc\depth-map-test.png --depth_num_layers 5 --depth_min_blur 1 --depth_max_blur 50 --output .\doc\depth-motion-output.png`

```python
import cv2
from blurgenerator import motion_blur_with_depth_map
img = cv2.imread('test.jpg')
depth_img = cv2.imread('test-depth.png')
result = motion_blur_with_depth_map(
   img,
   depth_map=depth_img,
   angle=30,
   num_layers=10,
   min_blur=1,
   max_blur=50
)
cv2.imwrite('./output.png', result)
```

![depth motion blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-motion-output.png)

- Lens blur with depth map

`blurgenerator --input .\doc\depth-test.jpg --type lens --input_depth_map .\doc\depth-map-test.png --depth_num_layers 3 --depth_min_blur 1 --depth_max_blur 50 --output .\doc\depth-lens-output.png`

```python
import cv2
from blurgenerator import lens_blur_with_depth_map
img = cv2.imread('test.jpg')
depth_img = cv2.imread('test-depth.png')
result = lens_blur_with_depth_map(
   img,
   depth_map=depth_img,
   components=5,
   exposure_gamma=5,
   num_layers=10,
   min_blur=1,
   max_blur=50
)
cv2.imwrite('./output.png', result)
```

![depth lens blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-lens-output.png)

- Gaussian blur with depth map

`blurgenerator --input .\doc\depth-test.jpg --type gaussian --input_depth_map .\doc\depth-map-test.png --depth_num_layers 3 --depth_min_blur 1 --depth_max_blur 50 --output .\doc\depth-gaussian-output.png`

```python
import cv2
from blurgenerator import gaussian_blur_with_depth_map
img = cv2.imread('test.jpg')
depth_img = cv2.imread('test-depth.png')
result = gaussian_blur_with_depth_map(
   img,
   depth_map=depth_img,
   sigma=5,
   num_layers=10,
   min_blur=1,
   max_blur=50
)
cv2.imwrite('./output.png', result)
```

![depth gaussian blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-gaussian-output.png)

## Contributor

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tbody>
    <tr>
      <td align="center"><a href="https://github.com/NatLee"><img src="https://avatars.githubusercontent.com/u/10178964?v=3?s=100" width="100px;" alt="Nat Lee"/><br /><sub><b>Nat Lee</b></sub></a></td>
    </tr>
  </tbody>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

## Reference

- [Circularly symmetric convolution and lens blur](http://yehar.com/blog/?p=1495)


## LICENSE

[MIT](LICENSE)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/NatLee/Blur-Generator",
    "name": "BlurGenerator",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "blur, generator, blur-image, cli",
    "author": "Nat Lee",
    "author_email": "natlee.work@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/6d/35/231d49ae2620a686e89e0c11c394de62f7216aa6bea5a4216b2d8ad33132/blurgenerator-1.1.0.tar.gz",
    "platform": null,
    "description": "# Blur Generator\n\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)[![PyPI implementation](https://img.shields.io/pypi/implementation/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)\n\n[![Test](https://github.com/NatLee/Blur-Generator/actions/workflows/test.yml/badge.svg)](https://github.com/NatLee/Blur-Generator/actions/workflows/test.yml)[![Release](https://github.com/NatLee/Blur-Generator/actions/workflows/release.yml/badge.svg)](https://github.com/NatLee/Blur-Generator/actions/workflows/release.yml)\n\n[![PyPI status](https://img.shields.io/pypi/status/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)[![PyPI license](https://img.shields.io/pypi/l/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)\n\n[![PyPI version fury.io](https://badge.fury.io/py/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)\n\n[![PyPI download month](https://img.shields.io/pypi/dm/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)[![PyPI download week](https://img.shields.io/pypi/dw/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)[![PyPI download day](https://img.shields.io/pypi/dd/BlurGenerator.svg)](https://pypi.python.org/pypi/BlurGenerator/)\n\n[![forthebadge made-with-python](http://ForTheBadge.com/images/badges/made-with-python.svg)](https://www.python.org/)\n\nThis tool is for generating blur on images.\n\nThere are 3 types of blur modes of `motion`, `lens`, or `gaussian`.\n\nWe can use the results on model training or something else.\n\n> You can find a simply use case with deep learning in https://github.com/NatLee/simply-blur-detector\n\n## Installation\n\n```bash\npip install blurgenerator\n```\n\nCheck it on [Pypi](https://pypi.org/project/BlurGenerator/).\n\n## Usage\n\n```bash\nblurgenerator --help\n```\n\n```bash\nusage: blurgenerator [-h] [--input INPUT] [--input_depth_map INPUT_DEPTH_MAP] [--output OUTPUT] [--type TYPE] [--motion_blur_size MOTION_BLUR_SIZE] [--motion_blur_angle MOTION_BLUR_ANGLE] [--lens_radius LENS_RADIUS] [--lens_components LENS_COMPONENTS]\n                     [--lens_exposure_gamma LENS_EXPOSURE_GAMMA] [--gaussian_kernel GAUSSIAN_KERNEL] [--depth_num_layers DEPTH_NUM_LAYERS] [--depth_min_blur DEPTH_MIN_BLUR] [--depth_max_blur DEPTH_MAX_BLUR]\n                        Size for motion blur. Default is 100.\n  --motion_blur_angle MOTION_BLUR_ANGLE\n                        Angle for motion blur. Default is 30.\n  --lens_radius LENS_RADIUS\n                        Radius for lens blur. Default is 5.0.\n  --lens_components LENS_COMPONENTS\n                        Components for lens blur. Default is 4.\n  --lens_exposure_gamma LENS_EXPOSURE_GAMMA\n                        Exposure gamma for lens blur. Default is 2.\n  --gaussian_kernel GAUSSIAN_KERNEL\n                        Kernel for gaussian. Default is 100.\n  --depth_num_layers DEPTH_NUM_LAYERS\n                        Layer for depth blur. Default is 3.\n  --depth_min_blur DEPTH_MIN_BLUR\n                        Min. blur for depth blur. Default is 1.\n  --depth_max_blur DEPTH_MAX_BLUR\n                        Max. blur for depth blur. Default is 100.\n```\n\n## Example and Result\n\n### Common use\n\n- Original image\n\n![original image](https://github.com/NatLee/Blur-Generator/raw/main/doc/test.png)\n\n#### Usage\n\n- Motion blur\n\n`blurgenerator --type motion --input ./doc/test.png --output ./doc/motion.png`\n\n```python\nimport cv2\nfrom blurgenerator import motion_blur\nimg = cv2.imread('test.png')\nresult = motion_blur(img, size=100, angle=30)\ncv2.imwrite('./output.png', result)\n```\n\n![motion blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/motion.png)\n\n- Lens blur\n\n`blurgenerator --type lens --input ./doc/test.png --output ./doc/lens.png`\n\n```python\nimport cv2\nfrom blurgenerator import lens_blur\nimg = cv2.imread('test.png')\nresult = lens_blur(img, radius=5, components=4, exposure_gamma=2)\ncv2.imwrite('./output.png', result)\n```\n\n![lens blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/lens.png)\n\n- Gaussian blur\n\n`blurgenerator --type gaussian --input ./doc/test.png --output ./doc/gaussian.png`\n\n```python\nimport cv2\nfrom blurgenerator import gaussian_blur\nimg = cv2.imread('test.png')\nresult = gaussian_blur(img, 100)\ncv2.imwrite('./output.png', result)\n```\n\n![gaussian blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/gaussian.png)\n\n### With depth map\n\nFeature from this [issue](https://github.com/NatLee/Blur-Generator/issues/1).\n\n- Original image\n\n![photo](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-test.jpg)\n\n- Depth map\n\n![depth map](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-map-test.png)\n\n#### Usage\n\n- Motion blur with depth map\n\n`blurgenerator --input .\\doc\\depth-test.jpg --type motion --input_depth_map .\\doc\\depth-map-test.png --depth_num_layers 5 --depth_min_blur 1 --depth_max_blur 50 --output .\\doc\\depth-motion-output.png`\n\n```python\nimport cv2\nfrom blurgenerator import motion_blur_with_depth_map\nimg = cv2.imread('test.jpg')\ndepth_img = cv2.imread('test-depth.png')\nresult = motion_blur_with_depth_map(\n   img,\n   depth_map=depth_img,\n   angle=30,\n   num_layers=10,\n   min_blur=1,\n   max_blur=50\n)\ncv2.imwrite('./output.png', result)\n```\n\n![depth motion blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-motion-output.png)\n\n- Lens blur with depth map\n\n`blurgenerator --input .\\doc\\depth-test.jpg --type lens --input_depth_map .\\doc\\depth-map-test.png --depth_num_layers 3 --depth_min_blur 1 --depth_max_blur 50 --output .\\doc\\depth-lens-output.png`\n\n```python\nimport cv2\nfrom blurgenerator import lens_blur_with_depth_map\nimg = cv2.imread('test.jpg')\ndepth_img = cv2.imread('test-depth.png')\nresult = lens_blur_with_depth_map(\n   img,\n   depth_map=depth_img,\n   components=5,\n   exposure_gamma=5,\n   num_layers=10,\n   min_blur=1,\n   max_blur=50\n)\ncv2.imwrite('./output.png', result)\n```\n\n![depth lens blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-lens-output.png)\n\n- Gaussian blur with depth map\n\n`blurgenerator --input .\\doc\\depth-test.jpg --type gaussian --input_depth_map .\\doc\\depth-map-test.png --depth_num_layers 3 --depth_min_blur 1 --depth_max_blur 50 --output .\\doc\\depth-gaussian-output.png`\n\n```python\nimport cv2\nfrom blurgenerator import gaussian_blur_with_depth_map\nimg = cv2.imread('test.jpg')\ndepth_img = cv2.imread('test-depth.png')\nresult = gaussian_blur_with_depth_map(\n   img,\n   depth_map=depth_img,\n   sigma=5,\n   num_layers=10,\n   min_blur=1,\n   max_blur=50\n)\ncv2.imwrite('./output.png', result)\n```\n\n![depth gaussian blur image](https://github.com/NatLee/Blur-Generator/raw/main/doc/depth-gaussian-output.png)\n\n## Contributor\n\n<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->\n<!-- prettier-ignore-start -->\n<!-- markdownlint-disable -->\n<table>\n  <tbody>\n    <tr>\n      <td align=\"center\"><a href=\"https://github.com/NatLee\"><img src=\"https://avatars.githubusercontent.com/u/10178964?v=3?s=100\" width=\"100px;\" alt=\"Nat Lee\"/><br /><sub><b>Nat Lee</b></sub></a></td>\n    </tr>\n  </tbody>\n</table>\n\n<!-- markdownlint-restore -->\n<!-- prettier-ignore-end -->\n\n<!-- ALL-CONTRIBUTORS-LIST:END -->\n\n## Reference\n\n- [Circularly symmetric convolution and lens blur](http://yehar.com/blog/?p=1495)\n\n\n## LICENSE\n\n[MIT](LICENSE)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Fast generate blur image.",
    "version": "1.1.0",
    "project_urls": {
        "Bug Reports": "https://github.com/NatLee/Blur-Generator/issues",
        "Documentation": "https://github.com/NatLee/Blur-Generator",
        "Homepage": "https://github.com/NatLee/Blur-Generator",
        "Source Code": "https://github.com/NatLee/Blur-Generator"
    },
    "split_keywords": [
        "blur",
        " generator",
        " blur-image",
        " cli"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6cf62b9b53e1b771ea210228828cd7e62a9ca08f26aad74b5bb1cfcc8a8c53e8",
                "md5": "511479d354deabee7eb278f72b15da97",
                "sha256": "ae227832c46fd486c5305aed72affb90c5cc5d1017076291e90fdabaca1fd563"
            },
            "downloads": -1,
            "filename": "BlurGenerator-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "511479d354deabee7eb278f72b15da97",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 11091,
            "upload_time": "2024-05-16T08:48:48",
            "upload_time_iso_8601": "2024-05-16T08:48:48.277406Z",
            "url": "https://files.pythonhosted.org/packages/6c/f6/2b9b53e1b771ea210228828cd7e62a9ca08f26aad74b5bb1cfcc8a8c53e8/BlurGenerator-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6d35231d49ae2620a686e89e0c11c394de62f7216aa6bea5a4216b2d8ad33132",
                "md5": "d2717ed300a1dc280db3fdee798c514e",
                "sha256": "12d852de29f0da3623eba96c76ba0b86628396553e4ec494f01c4ffc27982313"
            },
            "downloads": -1,
            "filename": "blurgenerator-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d2717ed300a1dc280db3fdee798c514e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 19103444,
            "upload_time": "2024-05-16T08:48:50",
            "upload_time_iso_8601": "2024-05-16T08:48:50.155462Z",
            "url": "https://files.pythonhosted.org/packages/6d/35/231d49ae2620a686e89e0c11c394de62f7216aa6bea5a4216b2d8ad33132/blurgenerator-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-16 08:48:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "NatLee",
    "github_project": "Blur-Generator",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "blurgenerator"
}
        
Elapsed time: 0.31781s