Эквивалентные функции Python для нескольких функций обработки изображений Matlab - PullRequest
2 голосов
/ 26 августа 2011

Существует ли эквивалентная функция python для каждого из следующих (может быть, в PIL ??):

край (изображение, 'canny')

Стрел ( 'строка', ..)

Стрел ( 'алмаз', 1)

imdilate (...)

imfil (...)

imerode (...)

medfilt2 (...)

Весь мой код симуляции написан на python, но не генерация IC! Я хочу, чтобы мое поколение микросхем перешло в python, поэтому мне не нужно запускать matlab каждый раз, когда я запускаю сим.

Спасибо

tylerthemiler

Ответы [ 2 ]

5 голосов
/ 26 августа 2011

Существует множество библиотек обработки изображений для Python, хотя они распределены по нескольким пакетам:

Просто зайдите на страницы документации и найдите эквивалент для каждой из перечисленных вами функций.Я думаю, что вы найдете функции обнаружения краев, морфологические операции, заливку и фильтрацию, все доступные в OpenCV (который является наиболее полным)

Примечание: они не все совместимы друг с другом (некоторые используют NumPyхранить изображения, другие нет).

1 голос
/ 26 августа 2011

Чтение PIL, похоже, у него есть несколько функций, которые будут полезны для реализации фильтра 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?похоже, он мог бы использовать некоторые вклады

...