Rotate Image segment without background
이전 댓글 표시
I want to rotate image like this

I have rotated Image but I have got image like this in matlab

How to fix this problem in matlab Actually I want only rotate leaf part only not whole image. Is it posibble
댓글 수: 4
Gopichandh Danala
2016년 9월 16일
편집: Gopichandh Danala
2016년 9월 16일
A simple trick is to change all the pixels other than the segment to a white background in your case.
I cropped your main image as u didn't post original image

and sample code is here:
leaf = imread('leaf.jpg');
figure, imshow(leaf, []);
rotateImg = imrotate(leaf,45); % rotate by 45 or 315 degrees
figure,
subplot(1,2,1)
imshow(rotateImg, [min(min(rotateImg(:))) max(max(rotateImg(:)))]);
newrotateImg = rotateImg;
newrotateImg(newrotateImg == 0) = 255; % make all 0 pixels to 255..
subplot(1,2,2)
imshow(newrotateImg, [min(min(newrotateImg(:))) max(max(newrotateImg(:)))]);

Hope it helps,
Image Analyst
2016년 9월 16일
편집: Image Analyst
2016년 9월 16일
Gopichandh, please post it as an answer below, not a comment, so you might get credit for it. And read this.
And use the 'bbox', 'crop' option of imrotate() to keep the final image the same size.
That method is okay if the background is perfectly uniform gray level and there are no pixels of that gray level inside the leaf. Otherwise it's not 100% robust, since it rotates the background as well as the leaf, and sets black pixels that may be inside the leaf to white.
And see my attached demo if you want to find the farthest points so you know the angle you need to rotate by.
Gopichandh Danala
2016년 9월 16일
Thanks image analyst i will do as u suggested from now..
Malan Jayanka
2016년 9월 18일
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Image Segmentation and Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




