problem with output of imrotate function.

2 views (last 30 days)
Hi, after using imrotate function, why center of object is changing. this problem is appear by obtain center of object before and after rotation. please guide me how to rotate image without changing coordination of center's object. original image:
output after rotation:
clc;clear;
img = imread('ms0.jpg');
degree = 45;
img1 = imrotate(img,-degree,'crop');
prob1 = regionprops(img,'centroid');
prob2 = regionprops(img1,'centroid');
img_center = prob1.Centroid;
img1_center = prob2.Centroid;
img_center = round(img_center);
img1_center = round(img1_center);
fprintf('center before rotation is : ( %d , %d ) \n.',img_center(1),img_center(2));
fprintf('center after rotation is : ( %d , %d ) \n.',img1_center(1),img1_center(2));

Accepted Answer

Image Analyst
Image Analyst on 25 May 2018
imrotate() rotates about the center of the center of the image. Your blob is not at the center of the image so it will move. Perhaps you should crop your image if you want it to be at the center of an image.
  3 Comments
Image Analyst
Image Analyst on 26 May 2018
See my Image Segmentation Tutorial to learn how you can call regionprops() to crop out the bounding box of your blob https://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862&sort=downloads_desc
props = regionprops(binaryImage, 'BoundingBox');
croppedImage = imcrop(binaryImage, props.BoundingBox);
imrotate(croppedImage, angle);
sparrow Jr
sparrow Jr on 26 May 2018
Edited: sparrow Jr on 26 May 2018
Hello, Sir.. Thank you so much for your comment in my thread. I would like to ask you further questions about matlab. Would you mind if I send you an email? Iam so sorry for my comment here.
Best regard, Sparrow.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!