MATLAB Answers

How to automatically crop empty space (with known color) around an image object (like "-trim" in ImageMagick)?

10 views (last 30 days)
Günter Bachelier
Günter Bachelier on 16 Jan 2017
Answered: Jordan Ross on 24 Jan 2017
After a distortion of an image the transformed image can have boarders with a color that was specified with 'FillValues'. I want to automatically crop the image object in the middle i.e. to get rid of the possible asymmetric boarders. Is there a function in Matlab or in the Image Processing Tools?

  0 Comments

Sign in to comment.

Answers (1)

Jordan Ross
Jordan Ross on 24 Jan 2017
Hello,
One possible solution would be to get the region of interest by color using the "roicolor" function. http://www.mathworks.com/help/images/ref/roicolor.html
Then using that function you can determine the indices of the image without that color. However, please note that this assumes that this color only appears in the border and not inside the image. For example, consider the following script where I remove the outer white box from an image:
I = imread('sampleImage.png');
I = rgb2gray(I);
colorOfInterest = 255;
roi = ~roicolor(I, colorOfInterest, colorOfInterest);
idx = find(roi==1);
[y, x] = ind2sub(size(I), idx);
x1 = round(min(x));
y1 = round(min(y));
x2 = round(max(x));
y2 = round(max(y));
croppedImage = I(y1:y2, x1:x2);
figure;
subplot(1,2,1);
imshow(I);
subplot(1,2,2);
imshow(croppedImage);

  0 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by