Python实现im2col和col2im函数
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Python实现im2col和col2im函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                今天來說說im2col和col2im函數(shù),這是MATLAB中兩個內(nèi)置函數(shù),經(jīng)常用于數(shù)字圖像處理中。
一般來說:
-  如果將圖像分割成塊的時候用的im2col參數(shù)為’distinct’,那么用col2im函數(shù)時參數(shù)也是’distinct’,即可將轉(zhuǎn)換后的數(shù)組復原。 
-  如果將圖像分割成塊的時候用的im2col參數(shù)為’sliding’,我目前還不知道MATLAB中使用內(nèi)置函數(shù)是如何復原的。 
今天,來看看Python中是如何實現(xiàn)這兩個函數(shù)的(sliding類型)。
- 對于im2col的實現(xiàn),我們沿著原始矩陣逐行計算,將得到的新的子矩陣展開成列,放置在列塊矩陣中。
- 對于col2im的實現(xiàn),我們沿著列塊矩陣逐行計算,將得到的行展成子矩陣,然后將子矩陣放置在最終結(jié)果對應的位置(每次當前值進行相加),同時記錄每個位置的值放置的次數(shù)。最后,將當前位置的值除以放置的次數(shù),即可得到結(jié)果(原始矩陣)。
測試代碼:
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' if __name__ == '__main__':mtx = np.around(np.random.rand(5, 5) * 100)print('原始矩陣:')print(mtx)a1 = im2col(mtx, (2, 3))print('im2col(分塊大小2x3):')print(a1)b1 = col2im(a1, (5, 5), (2, 3))print('col2im復原:')print(b1)a2 = im2col(mtx, (3, 3))print('im2col(分塊大小3x3):')print(a2)b2 = col2im(a2, (5, 5), (3, 3))print('col2im復原:')print(b2)運行結(jié)果:
原始矩陣: [[ 48. 38. 38. 59. 38.][ 38. 11. 25. 52. 44.][ 60. 69. 49. 93. 66.][ 88. 8. 47. 14. 47.][ 96. 37. 56. 86. 54.]] im2col(分塊大小2x3): [[ 48. 38. 60. 88. 38. 11. 69. 8. 38. 25. 49. 47.][ 38. 60. 88. 96. 11. 69. 8. 37. 25. 49. 47. 56.][ 38. 11. 69. 8. 38. 25. 49. 47. 59. 52. 93. 14.][ 11. 69. 8. 37. 25. 49. 47. 56. 52. 93. 14. 86.][ 38. 25. 49. 47. 59. 52. 93. 14. 38. 44. 66. 47.][ 25. 49. 47. 56. 52. 93. 14. 86. 44. 66. 47. 54.]] col2im復原: [[ 48. 38. 38. 59. 38.][ 38. 11. 25. 52. 44.][ 60. 69. 49. 93. 66.][ 88. 8. 47. 14. 47.][ 96. 37. 56. 86. 54.]] im2col(分塊大小3x3): [[ 48. 38. 60. 38. 11. 69. 38. 25. 49.][ 38. 60. 88. 11. 69. 8. 25. 49. 47.][ 60. 88. 96. 69. 8. 37. 49. 47. 56.][ 38. 11. 69. 38. 25. 49. 59. 52. 93.][ 11. 69. 8. 25. 49. 47. 52. 93. 14.][ 69. 8. 37. 49. 47. 56. 93. 14. 86.][ 38. 25. 49. 59. 52. 93. 38. 44. 66.][ 25. 49. 47. 52. 93. 14. 44. 66. 47.][ 49. 47. 56. 93. 14. 86. 66. 47. 54.]] col2im復原: [[ 48. 38. 38. 59. 38.][ 38. 11. 25. 52. 44.][ 60. 69. 49. 93. 66.][ 88. 8. 47. 14. 47.][ 96. 37. 56. 86. 54.]]總結(jié)
以上是生活随笔為你收集整理的Python实现im2col和col2im函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Python中比元组更好用的namedt
- 下一篇: Python中_,__,__xx__的区
