Эквивалентные функции Python для нескольких функций обработки изображений Matlab

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

край (изображение, 'хитрый')

стрелка('линия',..)

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

немедленно (...)

имфил(...)

имероде(...)

медфильтр2(...)

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

Спасибо,

Тайлертемилер


person tylerthemiler    schedule 25.08.2011    source источник
comment
На luispedro есть много полезных инструментов. В частности, Python Morphology Toolbox для преобразования изображений (т. этот сайт использует другой пакет, Mahotas.   -  person tylerthemiler    schedule 26.08.2011


Ответы (2)


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

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

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

person Amro    schedule 26.08.2011
comment
Спасибо! Я нашел другие, так как я опубликовал это, но я никогда не видел OpenCV, я проверю это :) - person tylerthemiler; 26.08.2011
comment
@tylerthemiler: если быть точным, вам понадобятся привязки python к библиотеке OpenCV. - person Amro; 26.08.2011
comment
Хорошо, я нашел много того, что мне нужно, в pymorph, я посмотрю на привязки pyhton, если застряну на этом! - person tylerthemiler; 26.08.2011
comment
PIL и OpenCV не используют numpy. Все остальные работают (и, следовательно, совместимы друг с другом). - person luispedro; 31.08.2011

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

person totowtwo    schedule 26.08.2011
comment
Да, к сожалению, это так. Хотя есть несколько альтернатив. У Mahotas есть несколько хороших функций. Существует также BioIMageXD, предназначенный специально для биоимиджинга. - person tylerthemiler; 26.08.2011