【问题标题】:Equivalent python functions for several matlab image processing functions几个matlab图像处理函数的等效python函数
【发布时间】:2011-08-27 00:58:20
【问题描述】:

以下每个是否都有等效的python函数(可能在PIL??):

边缘(图像,'canny')

strel('line',..)

strel('钻石',1)

imdilate(...)

imfil(...)

imerode(...)

medfilt2(...)

我所有的模拟代码都在 python 中,但不是 IC 生成!我想将我的 IC 生成导入 python,这样我就不必每次运行 sim 时都运行 matlab。

谢谢,

泰勒米勒

【问题讨论】:

标签: python matlab image-processing python-imaging-library


【解决方案1】:

有很多用于 Python 的图像处理库,尽管它们分布在多个包中:

只需浏览文档页面并查找与您列出的每个功能相同的功能。我想你会在 OpenCV 中找到所有可用的边缘检测、形态学操作、洪水填充和过滤功能(这是迄今为止最全面的)

注意:它们并非都相互兼容(有些使用 NumPy 存储图像,有些则不使用)。

【讨论】:

  • 谢谢!自从我发布后我找到了其他的,但我从未见过 OpenCV,我会检查一下:)
  • @tylerthemiler: 确切地说,你需要 python 绑定到 OpenCV 库
  • 好的,我在 pymorph 中找到了很多我需要的东西,如果我在使用它时遇到问题,我会研究一下 pyhton-bindings!
  • PIL 和 OpenCV 不使用 numpy。所有其他人都这样做(因此彼此兼容)。
【解决方案2】:

阅读 PIL,它看起来有一些函数可用于实现精明过滤器。形态腐蚀/扩张功能显然不可用。

这应该让您开始实施自己的精明过滤器。它在垂直和水平方向执行索贝尔滤波器。这使您大约完成了算法的一半。从那里,您将需要在 (width,height) 上迭代 (x,y) 并抑制非最大边缘。维基百科有很好的解释http://en.wikipedia.org/wiki/Canny_edge_detector

import ImageFilter

filtHorizontal = [1, 0, -1, 2, 0, -2, 1, 0, -1]
filtVertical   = [1, 2, 1, 0, 0, 0, -1, -2, -1]

im = im.filter(ImageFilter.BLUR)
edgeHorizontal = im.filter((3,3), filtHorizontal)
edgeVertical = im.filter((3,3), filtVertical)

PIL 是 python 的首选图像处理工具包吗?看起来它可以使用一些贡献

【讨论】:

  • 是的,不幸的是。不过有几个选择。 Mahotas 有一些不错的功能。还有专门用于生物成像的BioIMageXD
猜你喜欢
  • 2020-03-17
  • 2014-04-04
  • 2021-04-22
  • 2019-10-04
  • 2014-03-06
  • 2013-03-29
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多