小编som*_*141的帖子

矢量图像的图像比较(基于边缘检测)?

过去两天我一直在浏览帖子和例子,我尝试过并经过广泛测试的所有片段都证明是无用的,至少对我来说是这样.

我想要做的是比较从墙上或纸上拍摄的黑色矢量符号(质量类似于人们可能会说的严重扫描图像),并将其与相同或类似符号的电子版本进行比较(将存储在本地和与照片相比).请看一下两个附加的图像,第一个干净的图像(参考图像)是符号的数据库版本,第二个是我在一张纸上制作的蹩脚图画,然后我用我的iPad拍摄.

参考图像

测试图像

我希望程序如下:

  • 加载这两个图像,然后使用我在此处找到的修剪算法的修改版本进行修剪:使用PIL修剪图像.我发现'阈值'值为50,'显而易见'值为20(链接脚本中的参数)为这些图像提供了良好的结果
  • 然后将图像调整为相同尺寸并进行比较

现在进行比较,我尝试了大量不同的建议方法,但到目前为止,结果非常糟糕.实际上,我可以通过随机图像获得比测试结果更好的比较结果.我已经尝试了基于实际图像的RMS差异比较,它们的边缘(使用ImageFilter.CONTOUR或ImageFilter.FIND_EDGES的'过滤器'功能创建),基于像素的比较,但到目前为止我没有在网上找到任何东西(尽管我不间断的谷歌搜索)或者在StackOverflow这里给了我不错的结果.

我相信问题在于测试图像的嘈杂背景,但我还没有能够证明这一点.有没有人知道是否有办法从这些图像的边缘中获取矢量轮廓,并将它们不仅仅作为图像而是作为图像矢量进行比较?尽管我绘图很糟糕,但我发现这两个图像非常相似,应该可以很好地比较它.

python image image-processing computer-vision python-imaging-library

6
推荐指数
1
解决办法
2533
查看次数

将3D numpy导出为VTK文件,以便在Paraview/Mayavi中查看

对于那些想要将简单的3D numpy数组(以及轴)导出到.vtk(或.vtr)文件以进行后期处理并在Paraview或Mayavi中显示的人,有一个名为PyEVTK的小模块就是这样做的.该模块支持结构化和非结构化数据等.不幸的是,即使代码在基于unix的系统中工作正常,我也无法在任何简单地使事情变得复杂的Windows安装上工作(不断崩溃).我联系了开发人员,但他的建议没有用

因此我的问题是:如何使用该from vtk.util import numpy_support函数将3D数组(函数本身不支持3D数组)导出到.vtk文件?有没有一种简单的方法可以在不创建vtkDatasets等的情况下完成它?

非常感谢!

numpy vtk paraview

6
推荐指数
2
解决办法
1万
查看次数

适用于Python REST API的最优gunicorn-worker配置(数量和类别)

可以说我有两个概念上不同的REST API,它们是通过FlaskFalcon之类的框架在Python中开发的,我需要通过Gunicorn在具有4GB RAM和2个vCPU的服务器上进行部署。

API#1:CPU限制

对该API的请求几乎不涉及任何IO,而是受CPU限制。但是,这些运算非常快并且需要很少的存储空间,例如简单的数学运算。

API#2:IO绑定

对该API的请求涉及一系列HTTP请求,例如,对另一个API的请求或通过GET请求获取页面。因此,大部分“工作”都涉及等待其他请求解决。

我的问题是:最佳的Gunicorn工作程序配置(工作程序编号和类)是什么,以便从上述服务器上部署的这些API中获得最佳性能(最好是在并发和每秒请求方面)?

反身我会选择一些gevent级的工人,但是我一直在寻找文档来验​​证上述决定,但无济于事。

任何输入将不胜感激:)

python rest concurrency gevent gunicorn

6
推荐指数
1
解决办法
2394
查看次数

将 SQL 查询限制为 Graphene-SQLAlchemy 中定义的字段/列

这个问题已作为 GH 问题发布在https://github.com/graphql-python/graphene-sqlalchemy/issues/134下,但我想我也将其发布在这里以吸引大众。

完整的工作演示可以在https://github.com/somada141/demo-graphql-sqlalchemy-falcon下找到。

考虑以下 SQLAlchemy ORM 类:

class Author(Base, OrmBaseMixin):
    __tablename__ = "authors"

    author_id = sqlalchemy.Column(
        sqlalchemy.types.Integer(),
        primary_key=True,
    )

    name_first = sqlalchemy.Column(
        sqlalchemy.types.Unicode(length=80),
        nullable=False,
    )

    name_last = sqlalchemy.Column(
        sqlalchemy.types.Unicode(length=80),
        nullable=False,
    )
Run Code Online (Sandbox Code Playgroud)

简单地包装在SQLAlchemyObjectType这样的中:

class TypeAuthor(SQLAlchemyObjectType):
    class Meta:
        model = Author
Run Code Online (Sandbox Code Playgroud)

并通过以下方式暴露:

author = graphene.Field(
    TypeAuthor,
    author_id=graphene.Argument(type=graphene.Int, required=False),
    name_first=graphene.Argument(type=graphene.String, required=False),
    name_last=graphene.Argument(type=graphene.String, required=False),
)

@staticmethod
def resolve_author(
    args,
    info,
    author_id: Union[int, None] = None,
    name_first: Union[str, None] = None,
    name_last: Union[str, None] = None,
):
    query = …
Run Code Online (Sandbox Code Playgroud)

python sql sqlalchemy graphql graphene-python

6
推荐指数
1
解决办法
3170
查看次数

通过血管树的STL模型进行Python-VTK 3D样条回归

我需要创建维管树模型的样条线或折线表示(请参见下文)。

整个血管树

该模型采用STL格式,因此我具有所有顶点的xyz坐标。这些线应该穿过血管网格的中心,因此我认为最好的方法是通过顶点云进行样条回归另外,如果我可以在给定的点(例如,折线的坐标)上获得容器的半径,那将是很好的。

显示为网格的树的一部分

我浏览了这个论坛和VTK网站(假设他们对这种事情有一个简单的实现),但是到目前为止,我还没有找到可以使用的东西。有谁知道可以做到这一点的Python模块或VTK类(我会从Python调用它)?我在此找到的python模块全部用于2D数据。

非常感谢!

编辑:我遇到了一个名为VMTK的库,该库几乎专门处理血管分割,并具有所谓的“ 中心线计算 ”功能。但是,它们通常要求在其末端“切割”船只并定义“源点”。但是,在我的模型中,可以看到端点被“封顶”,这使事情变得更加复杂。如果找到解决方案,请在此处发布

python graphics regression vtk stl-format

5
推荐指数
1
解决办法
1230
查看次数

没有VTK的python中的3D数据的插值/子采样

我想要做的是相当简单,但到目前为止我还没有找到一个简单的方法:

我有一个带有浮点值的3D直线网格(因此3个坐标轴-1D numpy数组 - 用于网格单元的中心,3D numpy数组具有相应的形状,每个单元格中心都有一个值),我想插值(或您可以将其整个数组称为子样本数据(例如,尺寸因子为5),并使用线性插值.我见过的所有方法都涉及2D,然后是1D插值或VTK技巧,而不是使用(可移植性).

有人会建议一种方法,相当于在3D阵列中同时取5x5x5单元,平均并返回每个方向5倍的阵列吗?

提前感谢您的任何建议

编辑: 这是数据的样子,'d'是表示3D网格细胞的3D数组.每个单元格都有一个标量浮点值(在我的情况下是压力),'x','y'和'z'是三个1D数组,包含每个单元格的单元格的空间坐标(参见形状以及'x'数组的方式)好像)

In [42]: x.shape
Out[42]: (181L,)

In [43]: y.shape
Out[43]: (181L,)

In [44]: z.shape
Out[44]: (421L,)

In [45]: d.shape
Out[45]: (181L, 181L, 421L)

In [46]: x
Out[46]: 
array([-0.410607  , -0.3927568 , -0.37780656, -0.36527296, -0.35475321,
       -0.34591168, -0.33846866, -0.33219107, -0.32688467, -0.3223876 ,
        ...
        0.34591168,  0.35475321,  0.36527296,  0.37780656,  0.3927568 ,
        0.410607  ])
Run Code Online (Sandbox Code Playgroud)

我想做的是创建一个3D数组,让我们说一个90x90x210的形状(大约缩小2倍),首先从具有上述尺寸的阵列上的轴上对坐标进行二次采样,然后将3D数据"插值"到那个阵列.我不确定'插值'是否是正确的术语.下采样?平均?这是数据的2D切片:密度图

python 3d interpolation sampling

3
推荐指数
1
解决办法
8006
查看次数