CV預備(二): im2col與col2im

目錄

  • 前言
  • im2col
  • col2im
  • 最後

前言

Matlab矩陣處理的函數真的是太多了, 這裏來看兩個矩陣重排的函數im2colcol2im.bash


im2col

這裏有3種形式, 以下:函數

  • B = im2col(A, [m n])
  • B = im2col(A, [m n], 'sliding')
  • B = im2col(A, [m n], 'distinct')

B = im2col(A, [m n])B = im2col(A, [m n], 'sliding') 是等價的. 因此先從它開始說吧:spa

B = im2col(A, [m n], 'sliding')

A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
B = im2col(A, [2 2])
複製代碼

輸出以下:code

A =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16


B =

     1     5     9     2     6    10     3     7    11
     5     9    13     6    10    14     7    11    15
     2     6    10     3     7    11     4     8    12
     6    10    14     7    11    15     8    12    16
複製代碼

簡單來講, 就是以步長爲1進行滑動生成子矩陣, 子矩陣大小爲[m n]. 因此B中的每個列都是子矩陣.cdn


B = im2col(A, [m n], 'distinct')

這個和sliding最大的差異就是子矩陣不重疊. 總體生成方式沒有太大變化.blog


col2im

col2im就是im2col的逆過程. col2im有3中形式, 以下:string

  • A = col2im(B, [m n], [M N])
  • A = col2im(B, [m n], [M N], 'sliding')
  • A = col2im(B, [m n], [M N], 'distinct')

仍是和im2col類似, A = col2im(B, [m n], [M N])A = col2im(B, [m n], [M N], 'sliding') 是一個效果.it

A = col2im(B, [m n], [M N], 'sliding')

代碼以下:io

B = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
A = col2im(B, [1 1], [2, 8], 'sliding')
複製代碼

輸出以下:class

B =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16


A =

     1     9     2    10     3    11     4    12
     5    13     6    14     7    15     8    16
複製代碼

能夠看到, 依舊是豎着進行滑動, col2im的做用就是按照給的尺寸重排矩陣.


A = col2im(B, [m n], [M N], 'distinct')

B = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
A = col2im(A, [2 2], [2 8], 'distinct')
複製代碼

輸出以下:

B =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16


A =

     1     9     2    10     3    11     4    12
     5    13     6    14     7    15     8    16
複製代碼

能夠看到sliding輸出結果是相同的, 可是內在邏輯並不一樣.


最後

喜歡記得點贊或者關注哦, 有意見或者建議評論區見~

相關文章
相關標籤/搜索