對二維資料進行邊界拓展

2021-09-07 05:30:25 字數 1366 閱讀 7260

對二維資料處理的時候,常常遇到須要越界的問題。比方對影象進行濾波操作。對原始資料的邊界進行拓展。然後使用拓展後的資料作處理,能夠解決越界的問題。依據拓展出的資料的值來自**能夠分為多種邊界拓展方式,我們要實現的是將邊界進行奇對稱拓展。

舉例說明什麼是奇拓展。比方對原始二維資料向左拓展4列,那麼在邊界上向左第一列複製邊界上向右第一列,在邊界上向左第二列複製邊界上向右第二列。以此類推。邊界列並沒有被複製。由於c語言中是從0開始計數的,所以邊界列是0列。依照0列對稱拓展就稱為奇對稱拓展。

假設0列被拷貝到左拓展的第一列,1列被拷貝到向左拓展的第二列,那麼這樣的拓展方式成為偶拓展。

對二維資料進行奇拓展的**片段例如以下:

void abextendmemory(unsigned char *&imextdata, unsigned char *&imextorgdata,

int &s, int &r,

const int rows, const int cols, const io_byte *imdata,

const int a1min, const int a1max,

const int a2min, const int a2max)

}上面的函式,實現的是將原始二維資料(實際是一維儲存在記憶體裡的)放到乙個新的記憶體塊中儲存,新記憶體塊是加入了拓展邊界的記憶體的。

a1min,表示將原資料向上拓展(a1min<0? -a1min:0)行資料。

a1max。表示將原資料向下拓展(a1max>0? a1max:0)行資料。

a2min,表示將原資料向左拓展(a2min<0?

-a2min:0)列資料。

a2max,表示將原資料向右右拓展(a2max>0?a2max:0)列資料。

void aboddfillextendmemory(unsigned char *imextdata, unsigned char *imextorgdata,

const int a1min, const int a1max,

const int a2min, const int a2max,

const int rows, const int cols,

const int s, const int r)

for (int r = a1max; r > 0; r--)

// horizontal direction

if (a2min < 0)

}} if (a2max > 0) } } }

上面的**實現的是。對拓展出的邊界進行資料填充,詳細填充方式,依照奇對稱填充規則實現。

二維資料的拓展常常被使用到,特別是影象處理中,使用這段**,能夠降低點開發時間。另外。假設想使用其它拓展演算法,能夠直接將上面第二個函式的賦值操作改動成想要的規則就可以。

php對二維資料進行排序

php一維陣列的排序可以用sort asort arsort 等函式,但是php二維陣列的排序需要自定義。方法一 經驗證,成功 作用 對二維陣列進行指定key排序 引數 arr 二維陣列 shortkey 需要排序的列,short 排序方式 shorttype 排序型別 function multi...

利用pytorch對二維資料進行求解梯度

今天我們利用pytorch對二維資料進行求導並輸出顯示,主要用到pytorch中的linear mseloss 等函式,具體的求導過程詳見下面 import torch create tensors of shape 10,3 and 10,2 x torch.randn 10,3 y torch....

php對二維陣列進行排序

這幾天一直忙於公司某個系統的開發,沒來得及更新,真是罪過。php對二維陣列的排序其實很簡單,但要是不知道array multisort這個函式就比較費事了。這個函式的用法舉例如下 data array data array volume 67,edition 2 data array volume ...