python ITK GetPixel方法导致内存泄漏
最近使用ITK做圖像配準(zhǔn),需要對(duì)圖像進(jìn)行像素級(jí)遍歷,用以計(jì)算相似性度量函數(shù),原生C++版ITK(Insight Toolkit)提供了一個(gè)Iterator機(jī)制應(yīng)對(duì)這種大規(guī)模獲取像素信息的情況,在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大致實(shí)現(xiàn)了一遍,考慮到后續(xù)開(kāi)發(fā)效率,我打算用python版的itk重寫,其安裝也十分方便,直接pip install itk即可。問(wèn)題在于python版的ITK中沒(méi)有提供Iterator機(jī)制的接口,起初為了方便起見(jiàn),我直接使用GetPixel([i, j])來(lái)讀取像素值,但是在一次次迭代過(guò)程中,我發(fā)現(xiàn)其占用的內(nèi)存逐漸增加,迭代成百上千次以后內(nèi)存會(huì)發(fā)生泄露。剛開(kāi)始以為是nlopt庫(kù)有問(wèn)題,后來(lái)把問(wèn)題定位到了GetPixel方法上,耽誤了不少時(shí)間。
后來(lái)找到了一個(gè)python ITK官方文檔,閱讀以后發(fā)現(xiàn)可以將ITK圖像轉(zhuǎn)化為numpy數(shù)組,就試了試。
將圖像轉(zhuǎn)化維numpy數(shù)組以后索引就簡(jiǎn)單了,同時(shí)內(nèi)存泄漏問(wèn)題就不再出現(xiàn)了。
python ITK官方文檔:link
總結(jié)
以上是生活随笔為你收集整理的python ITK GetPixel方法导致内存泄漏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 新闲鱼验机源码+独立后台
- 下一篇: 蓝牙调试器 接收处理 hc-05蓝牙上传