У меня есть маска с областями, помеченными цифрами 1, 2 и 3. У меня есть трехмерный объем, который я хотел бы рассчитать, среднее значение пикселей соответствует этим областям.
Я хочу рассчитать среднее значение регионов с номером 1, номером 2 и номером 3 отдельно.
Правильно ли следующее?
m = среднее (объем (маска == 1));
m = среднее (объем (маска == 2));
m = среднее (объем (маска == 3));
ПРИМЕЧАНИЕ.
Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
Это требует совсем другого подхода. Вам нужно использовать одну из агрегирующих функций splitapply, accumarray или groupsummary. Предполагая, что ваша маска - это не маска, а изображение метки с целочисленными значениями от 0 до N:
objectsmean = accumarray(double(mask(:))+1, yourimage(:), [], @mean); %or objectsmean = splitapply(@mean, yourimage(:), double(mask(:))+1); %or objectsmean = groupsummary(yourimage(:), mask, 'mean');
accumarray, вероятно, самый быстрый. Двойной (..) здесь, если ваша маска хранится как целочисленный тип, а количество объектов равно intmax (класс (маска)), что приведет к переполнению при добавлении 1.
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ