用于图像分析的兴趣区域绘图工具(Python)
为了摆脱IDL和Matlab,我正在研究在python/scipy等工具中需要哪些功能。其中一个常见的需求是显示医学图像并标出感兴趣的区域(比如在IDL中叫defroi,或者它的图形用户界面版本xroi)。在chaco和matplotlib中,有一些LassoSelection工具的例子,虽然它们有点接近,但还是不完全符合我的需求(我希望能通过点击来画出一个多边形,而不是拖动光标)。
有没有现成的工具可以做到这一点,还是说我需要扩展和定制现有的类?无论哪种情况,能给我一些指引会很有帮助。
5 个回答
4
现在,matplotlib有一个很不错的小工具,叫做“LassoSelector”,它让自由绘制多边形变得非常简单。
这里有个示例代码: http://matplotlib.org/examples/widgets/lasso_selector_demo.html
这是我简化版的代码:
from pylab import *
from matplotlib.widgets import LassoSelector
fig, ax = plt.subplots()
ax.imshow(np.random.randint(0,255,(255,255)), cmap='gray')
def onselect(verts):
print verts
lasso = LassoSelector(ax, onselect)
subplots_adjust(left=0.1, bottom=0.1)
3
我觉得你可以试试用PyQTGraph来实现这个功能,https://launchpad.net/pyqtgraph。我自己用得不多,因为它的选项比matplotlib少一些,但速度挺快的,而且里面有一些现成的工具,可以帮助你选择感兴趣的区域。你可能会发现自己需要把matplotlib和PyQTGraph结合起来写一些自定义的绘图程序,不过这可能会让你头疼,因为它们的数据格式可能不一样等等。这会增加一些管理上的麻烦,但可能会解决你的问题。