2010-06-11 3 views
0

Я пытаюсь найти область некоторых регионов на изображении.Обработка изображений MATLAB HELP!

alt text http://img821.imageshack.us/img821/7541/cell1.jpg

Например, я хочу найти область темно-большой области на верхней левой стороне. , и я хочу найти область любой из замкнутой геометрии из изображения.

Как это сделать в Matlab.

Я посмотрел онлайн, и я попробовал regionprops(), но он не идентифицировал разные регионы.

ответ

3

фильтруйте свое изображение, используя 'imfilter'. используйте 'fspecial' для определения вашего фильтра. Затем используйте активную модель контура для сегментации больших объектов. google 'active contour matlab'. используйте «полигон» и функцию области, чтобы найти область замкнутых контуров.

+0

Я пробовал некоторые коды с сайта mathworks для активного контура. некоторые из них работают, но я не мог получить какую-либо область, и это не сработало для небольших регионов! Я думал об обрезке рисунка в первую очередь, чтобы устранить любой шум, затем я использовал imadjust, чтобы немного настроить контраст. Мне нужен какой-нибудь пример, чтобы лучше понять его. – Beho86

+3

Вы должны иметь возможность извлекать координаты x и y контура, используя [C, h] = контур (...). См. Http://www.mathworks.com/access/helpdesk/help/techdoc/ref/contour.html . Затем перейдите по этой ссылке, чтобы найти область: http://www.mathworks.com/access/ helpdesk/help/techdoc/ref/polyarea.html Активные контуры, подобные любому другому методу обработки изображений, не идеальны. Вам придется экспериментировать с параметрами модели в соответствии с вашими потребностями. Также хорошей идеей было бы сделать поиск литературы по активным контурным методам и реализовать их в MATLAB самостоятельно. Это должно быть весело! – hkf

0

Чтобы добавить ответ hkf, вы можете применить некоторую предварительную обработку к своему изображению, чтобы упростить обработку.

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

Тогда, конечно, задача состоит в том, чтобы найти рецепт, который работает для всех изображений, а не только один образец.

+0

Мне нравится метод использования imdilate, imclose и imerode, но есть ли способ стереть весь шум вокруг основной фигуры. Я имею в виду, что некоторые объекты близки к границе изображения, и это вызывает проблемы. Я видел это где-то на демонстрациях mathworks, но не уверен под каким именем! – Beho86

+0

http://drop.io/319wyii вот изображение, над которым я работаю. Я хочу заполнить белые области внутри, сгладить границу и стереть весь этот шум вокруг него. Я попытался использовать iclose и ierode, на самом деле не изменился. Заранее благодарен – Beho86

2

Я могу порекомендовать вам несколько способов сделать это:

а) среднее арифметическое фильтр:

f = imfilter(g, fspecial('average', [m n])) 

б) средний геометрический фильтр

f = exp(imfilter(log(g), ones(m, n), 'replicate')) .^ (1/(m*n)) 

с) среднее гармоническое фильтр

f = (m*n) ./ imfilter(1 ./ (g + eps), ones(m, n), 'replicate'); 

, где n и m - размер маски (для instace вы можете установить m=3 n=3)

0

Я думаю, вы можете использовать контурные методы для этой проблемы. Наконец, вы можете извлечь ее с помощью функции выделения contourdata. Исследование, вы увидите это на веб-сайте Mathworks.

Смежные вопросы