python ITK GetPixel方法导致内存泄漏
最近使用ITK做圖像配準,需要對圖像進行像素級遍歷,用以計算相似性度量函數,原生C++版ITK(Insight Toolkit)提供了一個Iterator機制應對這種大規模獲取像素信息的情況,在ITK官方文檔中也提到了若需高效獲取像素值不宜使用GetPixel()、SetPixel()
Note that these two methods are relatively slow and should not be used in situations where high-performance access is required.(InsightSoftwareGuide-Book1-5.0.1 chapter4.1.3)
我先用C++版ITK大致實現了一遍,考慮到后續開發效率,我打算用python版的itk重寫,其安裝也十分方便,直接pip install itk即可。問題在于python版的ITK中沒有提供Iterator機制的接口,起初為了方便起見,我直接使用GetPixel([i, j])來讀取像素值,但是在一次次迭代過程中,我發現其占用的內存逐漸增加,迭代成百上千次以后內存會發生泄露。剛開始以為是nlopt庫有問題,后來把問題定位到了GetPixel方法上,耽誤了不少時間。
后來找到了一個python ITK官方文檔,閱讀以后發現可以將ITK圖像轉化為numpy數組,就試了試。
將圖像轉化維numpy數組以后索引就簡單了,同時內存泄漏問題就不再出現了。
python ITK官方文檔:link
總結
以上是生活随笔為你收集整理的python ITK GetPixel方法导致内存泄漏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新闲鱼验机源码+独立后台
- 下一篇: websocket python爬虫_p