Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用scipy处理图片——滤镜处理

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

作者头像
方亮
发布于 2024-01-18 00:39:43
发布于 2024-01-18 00:39:43
34900
代码可运行
举报
文章被收录于专栏:方亮方亮
运行总次数:0
代码可运行

black_tophat

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
# 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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用numpy处理图片——模糊处理
colorDim3List是一个数组,每个元素是一个3维数组。比如colorDim3List[0]就是红色(R)值构成的3维数组。
方亮
2024/01/12
2960
使用numpy处理图片——模糊处理
图像风格滤镜
算法:图像风格滤镜是实现图像的视觉效果,清理或修饰图像,还原设计师的设计效果,如图像模糊滤镜、图像复古滤镜、图像边缘检测滤镜等。
裴来凡
2022/05/29
5210
图像风格滤镜
[编程经验] SciPy之图像处理小结
Python中可以处理图像的module有很多个,比如Opencv,Matplotlib, Numpy, PIL以及今天要分享的SciPy。其他几个后续都会总结一下,今天主要是SciPy。SciPy是Python 中一个科学计算(线性代数,统计,优化等)的module,但它的功能不限于计算,还包括信号和图像处理。Python中科学计算比较有名还有Pandas,堪称数据处理中的“瑞士军刀”。其中Numpy和SciPy底层是用c语言实现的,所以速度很快,所以使用它们的频率非常高,经常会把数据处理成numpy数组
用户1622570
2018/04/11
3.1K0
[编程经验] SciPy之图像处理小结
Scipy 中级教程——图像处理
Scipy 的图像处理模块提供了许多功能,用于读取、处理和分析图像。在本篇博客中,我们将深入介绍 Scipy 中的图像处理功能,并通过实例演示如何应用这些工具。
Echo_Wish
2024/01/14
3640
视差匹配
算法:视差匹配是以图像对中任一幅图像为基准,其大小为该基准图像的大小,元素值为视差值的图像进行匹配。从立体图像对中提取包含了场景的距离信息的视差图进行匹配,一直是双目视觉研究中最为活跃的领域。
裴来凡
2022/05/29
8760
视差匹配
python3-scipy-ndimage平滑
在python3的scipy ndimage模块提供了一个名为percentile_filter()的函数,它是中值滤波器的一个通用版本。
用户6599049
2022/06/25
7280
NumPy 初学者指南中文第三版:6~10
NumPy 具有许多从其前身 Numeric 继承的模块。 其中一些包具有 SciPy 对应版本,可能具有更完整的功能。 我们将在下一章中讨论 SciPy。
ApacheCN_飞龙
2023/04/17
2.6K0
NumPy 初学者指南中文第三版:6~10
Python气象绘图实例-我们一起画台风(代码+数据)
前段时间袭击中国的超强台风“利奇马”,以及这两天袭击美国的五级飓风“多利安”,让我们感受到了大自然的力量。所以,今天分享一个简单的Python实例,也算是延续前面python气象绘图系列(点击链接1;点击链接2),与大家交流如何选择合适的色标来绘制台风云顶亮温展示台风的部分特征。配色方案借鉴了GOES-16 Data[1]数据的处理方法。我们此次针对于中国区域进行一个展示,数据选取GridSat-B1 CDR(数据下载地址)[2]. A climate quality, long term dataset of global infrared window brightness temperatures. 1981-present (updated quarterly)。
MeteoAI
2019/09/05
5.3K3
Python气象绘图实例-我们一起画台风(代码+数据)
NumPy 秘籍中文第二版:五、音频和图像处理
在本章中,我们将介绍 NumPy 和 SciPy 的基本图像和音频(WAV 文件)处理。 在以下秘籍中,我们将使用 NumPy 对声音和图像进行有趣的操作:
ApacheCN_飞龙
2023/04/17
1.3K0
NumPy 秘籍中文第二版:五、音频和图像处理
SciPy详解
在Python科学计算领域,SciPy是一个非常重要的库。它提供了许多用于数值计算、优化、积分、统计和许多其他科学计算任务的功能。SciPy构建在NumPy之上,为数学、科学和工程领域的广泛问题提供了高效的解决方案。本教程将介绍SciPy的主要功能和用法,并提供一些示例以帮助您快速入门。
Michel_Rolle
2024/02/07
3K0
使用scipy处理图片——任意比例缩放
在《使用numpy处理图片——缩放图片》一文中,我们每2个取1个像素来达到图像缩小的效果。这就要求缩小的比例只能是整数倍,而不能支持缩小到0.3倍或者放大到1.5倍这样的效果。 为了支持任意倍数的缩放功能,我们需要使用scipy的zoom方法。 先看下原图
方亮
2024/01/16
2710
使用scipy处理图片——任意比例缩放
【说站】python中Harris角点检测
1、选择在图像上任意方向的固定窗口进行滑动,如果灰度变化较大,则认为该窗口内部存在角点。
很酷的站长
2022/11/23
6330
基于python的人群密度图生成
相关原理见:https://zhuanlan.zhihu.com/p/39424587
sparkexpert
2019/08/01
1.7K0
使用scipy处理图片——滚动图片
在《使用numpy处理图片——滚动图片》一文中,我们介绍了numpy的roll方法,它只能让超出区域的元素回到被移动的区域中,如下图。
方亮
2024/01/17
5500
使用scipy处理图片——滚动图片
【深度学习】实例第一部分:基础理论
自定义感知机 # 00_percetron.py # 实现感知机 # 实现逻辑和 def AND(x1, x2): w1, w2, theta = 0.5, 0.5, 0.7 tmp = x1 * w1 + x2 * w2 if tmp <= theta: return 0 else: return 1 print(AND(1, 1)) print(AND(1, 0)) # 实现逻辑或 def OR(x1, x2): w1,
杨丝儿
2022/02/28
1980
【深度学习】实例第一部分:基础理论
SSIM 的原理和代码实现
原文下载地址:https://ece.uwaterloo.ca/~z70wang/publications/ssim.pdf
SIGAI学习与实践平台
2019/05/30
19.5K4
基本图像操作和处理(python)
PIL提供了通用的图像处理功能,以及大量的基本图像操作,如图像缩放、裁剪、旋转、颜色转换等。
范中豪
2019/09/05
1.2K0
基本图像操作和处理(python)
使用scipy处理图片——旋转任意角度
在《使用numpy处理图片——90度旋转》中,我们使用numpy提供的方法,可以将矩阵旋转90度。而如果我们需要旋转任意角度,则需要自己撸很多代码。如果我们使用scipy库提供的方法,则会容易很多。 需要注意的是,旋转导致原始的图片会“撑开”修改后的图片大小。当然我们也可以通过参数设置,让图片大小不变,但是会让部分图片显示不出来。
方亮
2024/01/15
2760
使用scipy处理图片——旋转任意角度
NumPy Cookbook 带注释源码 五、NumPy 音频和图像处理
# 来源:NumPy Cookbook 2e Ch5 将图像加载进内存 import numpy as np import matplotlib.pyplot as plt # 首先生成一个 512x512 的图像 # 在里面画 30 个正方形 N = 512 NSQUARES = 30 # 初始化 img = np.zeros((N, N), np.uint8) # 正方形的中心是 0 ~ N 的随机数 centers = np.random.random_integers(0, N, s
ApacheCN_飞龙
2019/02/15
6050
NumPy Cookbook 带注释源码 五、NumPy 音频和图像处理
python中的scipy模块
scipy包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,统计,特殊函数等等。
狼啸风云
2019/08/31
5.6K0
相关推荐
使用numpy处理图片——模糊处理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验