博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
卷积核----图片边缘滤波器
阅读量:5030 次
发布时间:2019-06-12

本文共 1122 字,大约阅读时间需要 3 分钟。

 

from PIL import Imageimport numpy as npimport matplotlib.pyplot as pltdef main():    im = Image.open("D:\\temp\\img\\bw.jpg")    res=conv2(im,kv).astype(dtype="uint8")    print(res)    img2=Image.fromarray(res)    img2.show()#计算结果可能不在[0,255]之间def Relu2(a):    if a<0:        return 0    if a>255:        return 255#被卷积的图片,卷积核def conv2(im,kk):    matrix = np.asarray(im)    m1 = matrix[:, :, 0]    m2 = matrix[:, :, 1]    m3 = matrix[:, :, 2]    matrix1=conv(m1,kk)    matrix2=conv(m2,kk)    matrix3=conv(m3,kk)    return np.dstack((matrix1,matrix2,matrix3))#整体边缘滤波器ke=np.array([    [0,-4,0],[-4,16,-4],[0,-4,0]])#水平边缘滤波器kh=np.array([    [1,2,1],[0,0,0],[-1,-2,-1]])#垂直边缘滤波器kv=np.array([    [1,0,-1],[2,0,-2],[1,0,-1]])#被卷积一维矩阵,卷积核def conv(mx,kmx):    v1=mx.shape[0]    v2=mx.shape[1]    kv1=kmx.shape[0]    kv2=kmx.shape[1]    l1=v1-kv1    l2=v2-kv2    res=np.zeros((l1,l2))    for i in range(l1):        for j in range(l2):            res[i][j]=Relu2((mx[i:i+kv1,j:j+kv2]*kmx).sum())    return resmain()

图像读出来是个三维矩阵,对每个通道使用不同卷积核卷积,观察效果

 

效果:

整体边缘滤波器:

水平边缘滤波器:

垂直边缘滤波器:

 

转载于:https://www.cnblogs.com/webdev8888/p/10154437.html

你可能感兴趣的文章
IOS 开发调用打电话,发短信
查看>>
CI 框架中的日志处理 以及 404异常处理
查看>>
keepalived介绍
查看>>
css3 标签 background-size
查看>>
python itertools
查看>>
Linux内核调试技术——jprobe使用与实现
查看>>
ubuntu设计文件权限
查看>>
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
bootstrap
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>