簡體   English   中英

numpy的數組python尺寸統一

[英]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())

這里有兩種可能的情況:

  1. abc是圖像列表 ,對於每個圖像abc[i]是圖像i的生豬特征集。

  2. abc一個圖像,每個abc[i]是圖像的第i個生豬特征

對於第一種情況,圖像大小或生豬參數(鄰居的大小)在一個圖像與另一個圖像之間是不同的,因此您需要調整參數以正確計算所有圖像的生豬特征(如果您希望使用固定尺寸描述)。

對於第二種情況,您的豬計算不正確(對於同一張圖片,豬描述符的大小不應發生差異)。

因此,在任何情況下,都無法resizing數組resizing 您需要修復豬計算。


編輯:與您的問題有關,您有一個不同大小的圖像的數據集。 這是用豬描述符進行圖像分類的兩種可能的通用方法。 但是首先,簡要介紹一下HOG:

  • HOG在M x N個大小為mxn窗口中分割圖像,並在該窗口中以W個固定數量的bin(方向數)計算直方圖方向的漸變。 因此,您最終將獲得M x N x W功能。 要素通常在大小為K x W的2D向量中展平,其中K = M x N

現在,分類有兩種常用方法:

  1. 將一個圖像的所有特征組合為一個,即對K特征執行平均(或加權平均或范數)運算,最后得出每個圖像(方向數)的大小為W的向量。

  2. 為了保留(或多或少)要素的空間關系,另一種更常用的方法是將所有要素連接起來,以得到大小為Z的扁平化一維矢量, Z = K x W /

根據您的數據,我認為您正在嘗試執行第二步。 您面臨的問題是圖像的大小不同,因此,對於固定的窗口大小mxn ,一個圖像到另一個圖像的特征數量會有所不同。

解決此問題的方法是,固定所需的特征數M x N ,對於給定的圖像,計算m = height / Mn = width / N並使用該自定義mxn窗口大小計算HOG描述符(每個圖片都不同)。 這樣,您將得到一個K = M x N向量,每個圖像都具有相同的K (但窗口大小不同)。

使用固定的K並因此固定的Z您將能夠執行分類。

我不知道您要使用哪個庫來計算HOG,但是mxn窗口大小參數應該很容易為每個圖像手動設置。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM