У меня есть изображение с 6 цветами, каждый из которых указывает значение. Я получил изображение, как показано ниже.
Мне нужно сгладить края, а затем узнать площадь, а также площадь поверхности этой области. На втором изображении показана черная линия, нарисованная по краям, которая указывает на то, что мне нужно сгладить края таким образом.
Я использовал сегментацию для создания маски, как показано на третьем изображении, а затем получил сегментированное изображение, используя код, следующий за изображением.
Я использовал следующий код для создания замаскированного изображения. Источник : Как сегментировать
imshow(Out1)
str = 'Click to select initial contour location. Double-click to confirm and proceed.';
title(str,'Color','b','FontSize',12);
disp(sprintf('\nNote: Click close to object boundaries for more accurate result.'));
mask = roipoly;
figure, imshow(mask)
title('Initial MASK');
maxIterations = 3000;
bw = activecontour(Out1, mask, maxIterations, 'Chan-Vese');
% Display segmented image
figure, imshow(bw)
title('Segmented Image');
Чтобы использовать функцию «activecontour», мое изображение должно быть изображением в оттенках серого, которое я не могу преобразовать в оттенки серого и обратно. Также, чтобы узнать площадь поверхности / площадь региона, есть ли встроенная функция. Пожалуйста, помогите спасибо.