[英]Numpy Array python dimension uniform
我有一個二維數組,其中一維包含15個元素,而第二維具有可變長度
例如
>>print abc.size()
15
>>print abc[0].size()
5873
>>print abc[1].size()
9825
如何使用numpy或skikit稀疏數組使數組尺寸一致。 數據是圖像的生豬特征。
假設您想將所有數組向左對齊,並在右邊用零填充,那么您首先可以找到最大長度為
max_len = max([abc[i].size() for for i in range(abc.size())])
然后使用zeros
填充:
import numpy as np
for i in range(abc.size()):
abc[i] = np.append(abc[i], np.zeros(max_len - abc[i].size())
這里有兩種可能的情況:
abc
是圖像列表 ,對於每個圖像abc[i]
是圖像i
的生豬特征集。
abc
是一個圖像,每個abc[i]
是圖像的第i個生豬特征
對於第一種情況,圖像大小或生豬參數(鄰居的大小)在一個圖像與另一個圖像之間是不同的,因此您需要調整參數以正確計算所有圖像的生豬特征(如果您希望使用固定尺寸描述)。
對於第二種情況,您的豬計算不正確(對於同一張圖片,豬描述符的大小不應發生差異)。
因此,在任何情況下,都無法resizing
數組resizing
。 您需要修復豬計算。
編輯:與您的問題有關,您有一個不同大小的圖像的數據集。 這是用豬描述符進行圖像分類的兩種可能的通用方法。 但是首先,簡要介紹一下HOG:
M x N
個大小為mxn
窗口中分割圖像,並在該窗口中以W
個固定數量的bin(方向數)計算直方圖方向的漸變。 因此,您最終將獲得M x N x W
功能。 要素通常在大小為K x W
的2D向量中展平,其中K = M x N
現在,分類有兩種常用方法:
將一個圖像的所有特征組合為一個,即對K
特征執行平均(或加權平均或范數)運算,最后得出每個圖像(方向數)的大小為W
的向量。
為了保留(或多或少)要素的空間關系,另一種更常用的方法是將所有要素連接起來,以得到大小為Z
的扁平化一維矢量, Z = K x W
/
根據您的數據,我認為您正在嘗試執行第二步。 您面臨的問題是圖像的大小不同,因此,對於固定的窗口大小mxn
,一個圖像到另一個圖像的特征數量會有所不同。
解決此問題的方法是,固定所需的特征數M x N
,對於給定的圖像,計算m = height / M
和n = width / N
並使用該自定義mxn
窗口大小計算HOG描述符(每個圖片都不同)。 這樣,您將得到一個K = M x N
向量,每個圖像都具有相同的K
(但窗口大小不同)。
使用固定的K
並因此固定的Z
您將能夠執行分類。
我不知道您要使用哪個庫來計算HOG,但是mxn
窗口大小參數應該很容易為每個圖像手動設置。
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.