用于图像分析的感兴趣区域绘图工具(在python中)

时间:2011-02-18 22:39:39

标签: python image-processing matplotlib chaco

为了摆脱IDL和Matlab,我正在探索我需要在python / scipy等人中实现什么样的工具。一个共同的特征是显示医学图像和轮廓感兴趣的区域(例如IDL中的defroi,或者它的GIU版本,xroi)。在chaco和matplotlib中有一些LassoSelection工具的例子很接近但不太适合我的需求(我想点击一下多边形而不是拖动光标)。

是否存在可以执行此操作的现有工具,还是需要扩展和自定义现有类?在任何一种情况下,正确方向的指针都会有所帮助。

4 个答案:

答案 0 :(得分:7)

在拍摄包含感兴趣区域绘图等功能的交互式数据时,似乎matplotlib不适用。虽然它当然会处理事件处理等。

到目前为止,我能想出的最好成绩是以guiqwt为名的令人印象深刻的努力。它基于PyQwt,另外还有一个(相当容易满足的)依赖项列表。快速浏览一下他们的test examples of image visualization,可以看到一个方便的工具集。安装和运行这些示例很容易。时间将证明融入我自己的工作是多么容易。

答案 1 :(得分:3)

我认为您可以将PyQTGraph用于此目的,https://launchpad.net/pyqtgraph。我只是谨慎地使用它,因为它比matplotlib具有更少的先天选项,但它非常快,并且它确实有一些内置的小部件用于您感兴趣的ROI选择。您可能会发现自己构建自定义然而,绘制将matplotlib与PyQTGraph合并的例程,如果格式不同会导致令人头疼,等等。这会导致更多的簿记,但可能会解决您的问题。

答案 2 :(得分:2)

现在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 :(得分:0)

有一个很好的工具,可以通过github上的jdoepfert完全满足您的需求。 我的机器上的性能有点慢,但是如果你注释掉motion_notify_event它就像魅力一样。