图像卷积操作

import numpy as np
from PIL import Image
def ImgConvolve(image_array,kernel):
    '''参数说明:
        image_array:原灰度图像矩阵
        kernel:卷积核
        返回值:原图像与卷积核进行卷积后的结果
    '''
    image_arr = image_array.copy()
    img_dim1,img_dim2 = image_arr.shape
    k_dim1,k_dim2 = kernel.shape
    #计算填充扩展大小
    AddW = int((k_dim1-1)/2)
    AddH = int((k_dim2-1)/2)
    #padding英充
    temp= np.zeros([img_dim1 + AddW*2,img_dim2 + AddH*2])
    #将原图复制到临时图片的中央
    temp[AddW:AddW+img_dim1,AddH:AddH+img_dim2] = image_arr[:,:]
    #初始化一幅同样大小的图片作为输出图片
    output = np.zeros_like(a=temp)
    #将扩充后的图和卷积核进行卷积
    for i in range(AddW,AddW+img_dim1):
        for j in range(AddH,AddH+img_dim2):
            output[i][j]= int(np.sum(temp[i-AddW:i+AddW+1,j-AddW:j-AddW+1]*kernel))
    return output[AddW:AddW+img_dim1,AddH:AddH+img_dim2]

#提收竖直方问转征,sobel_x
kernel_1= np.array(
                [[-1,0,1],
                 [-2,9,2],
                 [-1,0,1]])
#提收水平方问转征,sobel_y
kernel_2 = np.array(
                 [[-1,-2,-1],
                  [0, 0, 0],
                  [1,2,1]])
#laplace扩展算子,二阶微分算子
kernel_3 = np.array(
                   [[1, 1, 1],
                    [1,-8, 1],
                    [1, 1, 1]])

import matplotlib.pyplot as plt
import matplotlib.cm as cm
 #%matplotlib inline
#打开图像并转化成灰度图像
image = Image.open("img_demo.png").convert("L")
#将图像转化成数组
image_array = np.array(image)

#卷积操作
sobel_x= ImgConvolve(image_array,kernel_1)
sobel_y=ImgConvolve(image_array,kernel_2)
laplace =ImgConvolve(image_array,kernel_3)
#显示图像
plt.imshow(image_array,cmap=cm.gray)
plt.axis("off")
plt.show()
plt.imshow(sobel_x,cmap=cm.gray)
plt.axis("off")
plt.show()
plt.imshow(sobel_y,cmap=cm.gray)
plt.axis("off")
plt.show()
plt.imshow(laplace,cmap=cm.gray)
plt.axis("off")
plt.show()

 

                    

 

 

                  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值