Как отследить площадь поверхности, а также сгладить определенную область изображения с помощью MATLAB

У меня есть изображение с 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», мое изображение должно быть изображением в оттенках серого, которое я не могу преобразовать в оттенки серого и обратно. Также, чтобы узнать площадь поверхности / площадь региона, есть ли встроенная функция. Пожалуйста, помогите спасибо.


person Abirami Anbalagan    schedule 03.04.2017    source источник


Ответы (1)


используйте im2double, im2uint8 и т. д., чтобы преобразовать двоичное изображение в оттенки серого.

используйте bwarea или regionprops, чтобы найти область региона.

person user2999345    schedule 03.04.2017