Не уверен, где мой код работает неправильно при использовании Improfile в MATLAB

В настоящее время я работаю над кодом, который берет стек изображений и вычисляет профили интенсивности этих стеков, чтобы сравнить их с другим стеком изображений.

Вот мой код:

for i = 1:c_frames
    d_Img(:,:) = d_I(i,:,:);
    c_Img(:,:) = c_I(i,:,:);
    c_d = improfile(d_Img);
    c_c = improfile(c_Img); 
end

Это набор ошибок (все они относятся к одной ошибке, конечно), которые я получаю:

введите описание изображения здесь

Когда я whos d_I и c_I, вот что я получаю:

введите описание изображения здесь

Итак, что именно означает ошибка, я попытался просмотреть документацию, но я не был уверен, что N означало.

Спасибо за ваши ответы и, пожалуйста, не стесняйтесь задавать любые вопросы, которые позволят уточнить вопрос.

1 ответ

Решение

Конечно, это загадочное сообщение об ошибке, я думаю, что набор входных данных, которые вы предоставляете improfile функция не завершена. Если вы ясно посмотрите на https://www.mathworks.com/help/images/ref/improfile.html, вы увидите, что improfile(n) Синтаксис нуждается в скаляре 'n' (а не в изображении), который представляет собой количество точек для включения в профиль.

Нет синтаксиса, позволяющего передавать только изображение. Вам также нужно будет включить координаты x и y конечных точек отрезков, для которых вы хотите создать профиль. Например,

load mri
D = squeeze(D)
dSlice = D(:,:,16);
x = [19 35 65 77];
y = [96 45 27 33];
improfile(dSlice, x, y)  % x and y are required inputs.

работает. Что касается сообщения об ошибке, если вам действительно интересно, попробуйте

edit improfile

Я полагаю, что N обозначает количество заданных вами точек, то, как вы это называете, душит эту логику.

Другие вопросы по тегам