How to crop image using imfreehand and save the output without connecting the boundaries
조회 수: 2 (최근 30일)
이전 댓글 표시
I have an input Image, I want to crop the image using imfreehand with closed boundary option. Unfortunately when I create mask and save the output:
h = imfreehand('Closed',false);
output_mask = h.createMask();
the end points of the cropped region becomes a closed polygon.
This is input file
This is the required output.
I am getting this output
Thanks in advance
댓글 수: 0
답변 (2개)
Matt J
2019년 12월 19일
편집: Matt J
2019년 12월 19일
I think you simply neglected to trace the full boundary of the shape. Though I traced very quickly and unneatly, the result I get below shows what you should be getting when you trace the full boundary.
댓글 수: 6
Image Analyst
2019년 12월 20일
Your depicted desired output does not show the edges - it shows the entire, filled blob.
Image Analyst
2019년 12월 19일
If you want that output, why not simply binarize the image:
grayImage = imread('image.png');
if ndims(grayImage) == 3
grayImage = rgb2gray(grayImage); % Convert RGB image into gray scale.
end
subplot(1, 2, 1);
imshow(grayImage);
binaryImage = ~imbinarize(grayImage);
subplot(1, 2, 2);
imshow(binaryImage);
It looks like the above image is what you said you want, so why do freehand masking?
댓글 수: 4
Image Analyst
2019년 12월 20일
OK, no explanation for why you need edges - I guess it's proprietary or something.
However my masking demo will allow you to mask freehand-drawn regions with optional cropping into a subimage if you want. Does it not do what you want? You can still detect edges if you feel that is definitely the best approach.
참고 항목
카테고리
Help Center 및 File Exchange에서 Author Block Masks에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!