用于几个matlab图像处理函数的等效python函数

时间:2011-08-25 21:52:02

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

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

edge(图片,'canny')

strel( '线',..)

strel( '钻石',1)

imdilate(...)

imfil(...)

imerode(...)

medfilt2(...)

我的所有模拟代码都在python中,但不是IC代!我想把我的IC生成到python中,所以每次运行sim时我都不必运行matlab。

谢谢,

tylerthemiler

2 个答案:

答案 0 :(得分:5)

Python有很多图像处理库,但它们分布在许多软件包中:

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

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

答案 1 :(得分:1)

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

这应该让您开始实现自己的canny过滤器。它在垂直和水平方向上执行索贝尔滤波器。这让你大约在算法的一半。从那里,您需要在(宽度,高度)上迭代(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的首选图像处理工具包吗?看起来它可以使用一些贡献