Rotate Image segment without background
Show older comments
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 Comments
Gopichandh Danala
on 16 Sep 2016
Edited: Gopichandh Danala
on 16 Sep 2016
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
on 16 Sep 2016
Edited: Image Analyst
on 16 Sep 2016
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
on 16 Sep 2016
Thanks image analyst i will do as u suggested from now..
Malan Jayanka
on 18 Sep 2016
Accepted Answer
More Answers (0)
Categories
Find more on Image Segmentation and Analysis in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



