Python池化操作

對輸入圖像進行池化操作來降採樣,不採用resize。

常用的池化方法:

  1.均值池化:對池化區域內的像素點取均值,這種方法得到的特徵數據對背景信息更敏感

  2.最大池化:對池化區域的所有像素值取最大值,這種方法得到的特徵數據對紋理信息更加敏感

代碼

import numpy as np
import cv2

#池化操作,縮放圖像
def pooling(data, m, n, key='mean'):
    h,w,c = data.shape
    img_new = []
    for i in range(0,h,m):
        line = []
        for j in range(0,w,n):
            x = data[i:i+m,j:j+n]#選取池化區域
            if key == 'mean': #平均池化
                line.append([np.sum(x[:,:,0]/(n*m)),np.sum(x[:,:,1]/(n*m)),np.sum(x[:,:,2]/(n*m))])
            elif key == 'max': #均值池化
                line.append([np.max(x[:,:,0]),np.max(x[:,:,1]),np.max(x[:,:,2])])
            else:
                return data
        img_new.append(line)
    return np.array(img_new,dtype='uint8')

if __name__ == '__main__':
    img = cv2.imread('1.jpg')
    
    img_new = pooling(img,2,2,'mean')
    cv2.imshow('aaa',img)
    cv2.imshow('bbb',img_new)
    cv2.waitKey(0)

原始圖像:
在這裏插入圖片描述
均值池化後:
在這裏插入圖片描述

最大池化後:
在這裏插入圖片描述

綜上:爲基於池化的圖像縮放操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章