pandding实现‘replicate’操作

图像中的padding操作一般是zeropadding,这次有作业要求实现replicate’,填补的像素拷贝与其最近的图像边界像素灰度。研究了一下,写成代码如下:

# -*- coding: utf-8 -*-
"""
Created on Sun Oct  6 14:30:58 2019

@author: Administrator
"""

import numpy as np

def compute_conv(fm,k):
    [h,w]=fm.shape
    r=int(k/2)
    #定义边界填充0后的map
    padding_fm=np.zeros([h+r*2,w+r*2],np.float32)
    #将输入在指定该区域赋值,即除了4个边界后,剩下的区域
    padding_fm[r:h+r,r:w+r]=fm 
    #如果填充方式是'replicate'
    
    for j in range(r):
        
        padding_fm[r-1-j][r-1-j] = padding_fm[r-j][r-j]
        padding_fm[r-1-j][r+w+j] = padding_fm[r-j][r+w-1+j]
        padding_fm[r+h+j][r-1-j] = padding_fm[r+h-1+j][r-j]
        padding_fm[r+h+j][r+w+j] = padding_fm[r+h-1+j][r+w-1+j]
        for i in range(r-j, r+w+j):
            padding_fm[r-1-j][i] = padding_fm[r-j][i]
        
        for i in range(r-j, r+h+j):
            padding_fm[i][r+w+j] = padding_fm[i][r+w-1+j]
            
        for i in range(r-j, r+h+j):
            padding_fm[i][r-1-j] = padding_fm[i][r-j]
            
        for i in range(r-j, r+w+j):
            padding_fm[r+h+j][i] = padding_fm[r+h-1+j][i]
            
        
    print(padding_fm)
    


weights_data=[ 
               [ 1, 2, 3],
                [4, 5, 6],
                [7, 8, 9]
           ] 

weights_data=[ 
               [ 1, 2, 3, 4, 5],
                [6, 7, 8, 9, 10],
                [11,12,13,14,15],
                [16,17,18,19,20],
                [21,22,23,24,25]
           ]   
fm =  np.asarray(weights_data,np.float32)   

compute_conv(fm,5)





  

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值