2016-01-02 3 views
0

я получил сообщение об ошибке при использовании активного контура:Ошибка при помощи активного контура

??? Неопределенная функция или метод «activecontour» для ввода аргументов типа «single».

Ошибка в ==> Segmentasi> threshold_Callback при 114 final = activecontour (image2, mask, 100);

image1 = handles.citra1; 
    level=0.008; 
    bw = edge(image1,'Canny'); 
    axes(handles.axes2); 
    imshow(bw,[]); 

    %active contour 
    image2 = bwdist(~bw); 
    mask = zeros(size(image2)); 
    mask(25:end-25,25:end-25) = 1; 
    final = activecontour(image2,mask , 100); 
    axes(handles.axes5) 
    imshow(final,[]); 
    handles.data3 = final; 
    guidata(hObject,handles); 

Я использую изображение из DICOM файлов (сагиттальное изображение)

+1

благодаря Adriaan для редактирования мой вопрос :) –

+0

'activecontour' был введен в CVST инструментов MATLAB по состоянию MATLAB R2013a. Какая версия MATLAB у вас есть? Если у вас есть что-то до R2013a, тогда у вас не будет этой функции, и именно поэтому вы получаете эту ошибку. См. Документацию для более подробной информации ... особенно в нижней части. Вы увидите, когда была введена функция: http://www.mathworks.com/help/images/ref/activecontour.html – rayryeng

+1

oh ic, im using matlab 2011a, поэтому я не могу использовать эту функцию, спасибо за решение моей проблемы , :) –

ответ

2

problim является то, что выходом из функции bwdist является матрицей и входная функции activecontour является черно-белым изображением. Поэтому вам нужно преобразовать матрицу в полутоновое изображение перед ее использованием. Это делается с помощью функции, которая называется mat2gray. Для этого, после использования bwdist применить mat2gray следующим образом:

image2 = mat2gray(bwdist(~bw)); 

И затем остальная часть кода работает. Проверьте мой простой пример:

bw = zeros(200,200); 
bw(50,50) = 1; 
bw(50,150) = 1; 
bw(150,50) = 1; 
D1 = bwdist(bw); 

D2 = mat2gray(D1); 
mask = zeros(size(D2)); 
mask(25:end-25,25:end-25) = 1; 
final = activecontour(D2,mask,100); 

subplot(1,3,1);imshow(bw) 
subplot(1,3,2);imshow(mat2gray(D1)) 
subplot(1,3,3);imshow(final,[]); 

enter image description here

+0

Я попробовал ваш код, но теперь его говорят _ "Неопределенная функция или метод 'activecontour' для ввода аргументы типа 'double'." _ –

+0

@alandsamuel Вы можете отправить изображение? Потому что, как вы видите, этот метод должен работать, как я показал. – NKN

+0

@NKN OP не имеет функции 'activeecontour'. Это единственное объяснение их проблемы, если вы написали решение и оно работает. – rayryeng

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