iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
AI & Data

資料三十-那些最基本的資料處理與分析技能系列 第 20

【Day20-填充】二維圖片資料要怎麼做填充?

今天簡單介紹一下在處理二維圖片中算是偶爾會用到的工具——填充資料

沿著各種方向填充

這邊以2d-array為例,不同尺寸會有不同結果

原始

一個參數——四周數量
np.pad(tmp1,1,'constant',constant_values=100)

兩個參數——對兩個軸後方添加幾個
np.pad(tmp1,(0,3),'constant',constant_values=100)

2x2個參數——對每個軸的前後添加幾個
np.pad(tmp1,((0,0),(1,1)),'constant',constant_values=100)

沿著特定縫隙填充

要處理的原始矩陣和對應的seam矩陣
M = np.array([
  [11, 12, 13, 14],
  [21, 22, 23, 24],
  [31, 32, 33, 34]
])

seam = np.array([
  [0, 1, 0, 0],
  [0, 0, 1, 0],
  [0, 0, 0, 1]
])
先建立好一個擴增完之後大小的output矩陣
m, n = seam.shape
output = np.empty((m, n+1), input.dtype)
mask = np.ones((m, n+1), dtype=bool)
output

這邊那個神奇的數字是因為np.empty()產生出來的是沒有初始化的數字

使用np.where()找到seam的每個位置
nz = np.where(seam)
nz

取反運算之後填入原始數據
mask[nz] = False
output[mask]=input.ravel()
output

接下來就可以針對seam填入特定要求的數據了
output[nz] = 1

上一篇
【Day19-顏色】眼前的黑不是黑,你說的白是什麼白?——淺談圖片資料的色彩空間
下一篇
【Day21-濾波】圖片也有頻率?影像資料如何做濾波?
系列文
資料三十-那些最基本的資料處理與分析技能30

尚未有邦友留言

立即登入留言