前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用scipy处理图片——滤镜处理

使用scipy处理图片——滤镜处理

作者头像
方亮
发布2024-01-18 08:39:43
1390
发布2024-01-18 08:39:43
举报
文章被收录于专栏:方亮方亮

black_tophat

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'black_tophat.png', ndimage.black_tophat, 1, 91, 10)

对应的size(ndimage.black_tophat第二个参数)的值

1

11

21

31

41

51

61

71

81

在这里插入图片描述
在这里插入图片描述

white_tophat

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.white_tophat(args[0], args[1])

generate('lena.png', 'white_tophat.png', func, 1, 91, 10)

对应的size(ndimage.white_tophat第二个参数)的值

1

11

21

31

41

51

61

71

81

在这里插入图片描述
在这里插入图片描述

convolve

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    weights = np.eye(args[1])
    return ndimage.convolve(args[0], weights)

generate('lena.png', 'convolve.png', func, 1, 10, 1)

对应的weights(ndimage.convolve第二个参数)的维度是

1

2

3

4

5

6

7

8

9

在这里插入图片描述
在这里插入图片描述

correlate

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    weights = np.eye(args[1])
    return ndimage.correlate(args[0], weights)

generate('lena.png', 'correlate.png', func, 1, 10, 1)

对应的weights(ndimage.correlate第二个参数)的维度是

1

2

3

4

5

6

7

8

9

在这里插入图片描述
在这里插入图片描述

gaussian_filter

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'gaussian_filter.png', ndimage.gaussian_filter, 1, 10, 1)

对应的sigma(ndimage.gaussian_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

在这里插入图片描述
在这里插入图片描述

gaussian_laplace

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'gaussian_laplace.png', ndimage.gaussian_laplace, 0.2, 1.9, 0.2)

对应的sigma(ndimage.black_tophat第二个参数)的值

0.2

0.4

0.6

0.8

1.0

1.2

1.4

1.6

1.8

在这里插入图片描述
在这里插入图片描述

maximum_filter

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'maximum_filter.png', ndimage.maximum_filter, 1, 10, 1)

对应的size(ndimage.maximum_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

在这里插入图片描述
在这里插入图片描述

median_filter

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'median_filter.png', ndimage.median_filter, 1, 10, 1)

对应的size(ndimage.median_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

在这里插入图片描述
在这里插入图片描述

minimum_filter

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

generate('lena.png', 'minimum_filter.png', ndimage.minimum_filter, 1, 10, 1)

对应的size(ndimage.minimum_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

在这里插入图片描述
在这里插入图片描述

percentile_filter

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.percentile_filter(args[0], percentile=args[1], size=args[1])

generate('lena.png', 'percentile_filter.png', func, 1, 10, 1)

对应的percentile和size(ndimage.percentile_filter第二、三个参数)的值

1

2

3

4

5

6

7

8

9

在这里插入图片描述
在这里插入图片描述

prewitt

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.prewitt(args[0])

generate('lena.png', 'prewitt.png', func, 1, 2, 1)
在这里插入图片描述
在这里插入图片描述

rank_filter

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.rank_filter(args[0], rank=args[1], size=args[1]*2)

generate('lena.png', 'rank_filter.png', func, 1, 10, 1)

对应的rank(ndimage.rank_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

对应的size(ndimage.rank_filter第三个参数)的值

2

4

6

8

10

12

14

16

18

在这里插入图片描述
在这里插入图片描述

sobel

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.sobel(args[0])

generate('lena.png', 'sobel.png', func, 1, 2, 1)
在这里插入图片描述
在这里插入图片描述

spline_filter

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.spline_filter(args[0], args[1]).astype(np.uint8)

generate('lena.png', 'spline_filter.png', func, 2, 5, 1)

对应的size(ndimage.black_tophat第二个参数)的值

2

3

4

在这里插入图片描述
在这里插入图片描述

uniform_filter

代码语言:javascript
复制
import sys 
sys.path.append("..") 
from frame import *
import scipy.ndimage as ndimage

def func(*args):
    return ndimage.uniform_filter(args[0], args[1])

generate('lena.png', 'uniform_filter.png', func, 1, 10, 1)

对应的size(ndimage.uniform_filter第二个参数)的值

1

2

3

4

5

6

7

8

9

在这里插入图片描述
在这里插入图片描述

基础代码

代码语言:javascript
复制
# frame.py
import numpy as np
from PIL import Image
import scipy.ndimage as ndimage

def generate(image_from, image_to, filter, start = 1, end = 10, step = 1):
    source = np.array(Image.open(image_from))

    colorDim3List = np.dsplit(source, 3)
    red = colorDim3List[0].reshape(source.shape[0], source.shape[1])
    green = colorDim3List[1].reshape(source.shape[0], source.shape[1])
    blue = colorDim3List[2].reshape(source.shape[0], source.shape[1])

    def inline_filter(red, green, blue, some_value):
        redFilter = filter(red, some_value)
        greenFilter = filter(green, some_value)
        blueFilter = filter(blue, some_value)
        return np.dstack((redFilter, greenFilter, blueFilter))

    varrays = []
    harrays = []
    hindex = 0
    for i in np.arange(start, end, step):
        filter3D = inline_filter(red, green, blue, i)
        harrays.append(filter3D)
        hindex += 1
        if hindex % 3 == 0:
            varrays.append(np.hstack(harrays))
            harrays = []
            hindex = 0
            
    if varrays == []:
        varrays.append(np.hstack(harrays))
            
    full3D = np.vstack(varrays)
    Image.fromarray(full3D).save(image_to)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • black_tophat
  • white_tophat
  • convolve
  • correlate
  • gaussian_filter
  • gaussian_laplace
  • maximum_filter
  • median_filter
  • minimum_filter
  • percentile_filter
  • prewitt
  • rank_filter
  • sobel
  • spline_filter
  • uniform_filter
  • 基础代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档