多个MATLAB图像处理函数的等效Python函数
有没有和下面这些功能相对应的Python函数呢?可能在PIL库里?
edge(image, 'canny')
strel('line',..)
strel('diamond',1)
imdilate(...)
imfil(...)
imerode(...)
medfilt2(...)
我所有的模拟代码都是用Python写的,但生成初始条件的部分不是!我想把生成初始条件的代码也转到Python里,这样我每次运行模拟的时候就不用再去用Matlab了。
谢谢,
tylerthemiler
2 个回答
1
根据PIL(Python图像库)的资料,它有一些功能可以帮助我们实现Canny边缘检测滤镜。不过,形态学的腐蚀和膨胀功能似乎是没有的。
这段内容可以帮助你开始实现自己的Canny滤镜。它会在垂直和水平方向上执行Sobel滤波,这样你就完成了算法的一半。接下来,你需要遍历每个像素点(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中首选的图像处理工具包吗?看起来它还可以有一些改进的地方。
5
对于Python来说,有很多处理图像的库,不过这些库分散在不同的包里:
你可以查看这些库的文档,找找看每个你提到的功能在这些库里对应的是什么。我觉得你会在OpenCV里找到边缘检测、形态学操作、区域填充和过滤功能,这个库功能最全。
需要注意的是,这些库之间并不都是兼容的(有些使用NumPy来存储图像,有些则不使用)。