python实现3D卷积(convolve3d)

本文介绍如何在Python中使用numpy库实现3D卷积,适用于深度学习和神经网络中的3D数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import numpy as np
import scipy
img = np.random.rand(64, 64, 54)#three dimensional image
k1 = np.array([0.114,0.141,0.161,0.168,0.161,0.141,0.114])#the kernel along the 1st dimension
k2 = k1#the kernel along the 2nd dimension
k3 = k1#the kernel along the 3nd dimension
#Convolve over all three axes in a for loop
for i in np.arange(img.shape[0]):
    for j in np.arange(img.shape[1]):
        oneline = img[i,j,:]
        img[i,j,:] = np.convolve(oneline, k1, mode='same')
for i in np.arange(img.shape[1]):
    for j in np.arange(img.shape[2]):
        oneline = img[:,i,j]
        img[:,i,j] = np.convolve(oneline, k2, mode='same')
for i in np.arange(img.shape[0]):
    for j in np.arange(img.shape[2]):
        oneline = img[i,:,j]
        img[i,:,j]=np.convolve(oneline,k3,mode='same')
print(img.shape)

定义成函数如下:

improt numpy as np
def convolve3d(img,kernel,mode='same'):
    for i in np.arange(img.shape[0]):
        for j in np.arange(img.shape[1]):
            oneline = img[i,j,:]
            img[i,j,:] = np.convolve(oneline, kernel[0], mode='same')
    for i in np.arange(img.shape[1]):
        for j in np.arange(img.shape[2]):
            oneline = img[:,i,j]
            img[:,i,j] = np.convolve(oneline, kernel[1], mode='same')
    for i in np.arange(img.shape[0]):
        for j in np.arange(img.shape[2]):
            oneline = img[i,:,j]
            img[i,:,j]=np.convolve(oneline,kernel[2],mode='same')
    return  img
img = np.ones((4,4,4))
v = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(v.shape)
a = convolve3d(img,kernel=v,mode='same')
print(a.shape)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值