how to remove black margines automatically from images?

19 views (last 30 days)
how can i automatically remove black margines around border of an image,like the dark lines remains around an image when you scan it,there is also this link which describes about this,but can any one gives a better code,thanx http://uk.mathworks.com/matlabcentral/answers/128133-automatically-trim-remove-crop-black-borders-margins-from-images-volumes i also used imclearborder,but it wont work on my image,
  4 Comments
Image Analyst
Image Analyst on 30 Jan 2015
Just use imcrop() or regular indexing to extract a subimage.
sara
sara on 30 Jan 2015
Edited: sara on 30 Jan 2015
there are more than one image,and the problem is that in one image the margin is on the right side,in another it is in left side,and even their size is different,in one image it is a thick line,another is a thin line, i will work on regular indexing to extract sub image,thank you

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 30 Jan 2015
I'm not sure why that is a problem. Just find the first and last column and crop like I suggested:
horizontalProfile = mean(grayImage, 1) > 10; % Or whatever.
firstColumn = find(horizontalProfile, 1, 'first');
lastColumn = = find(horizontalProfile, 1, 'last');
subImage = grayImage(:, firstColumn, lastColumn);
Is there a problem with that? I think it should handle the cases you mentioned. Does it not?
  5 Comments
Image Analyst
Image Analyst on 4 Jan 2020
Oh, sorry - I didn't read closely enough, or I misinterpreted.
To get the bounding box of everything, here is one way
[r, c] = find(binaryImage);
row1 = min(r);
row2 = max(r);
col1 = min(c);
col2 = max(c);
croppedImage = grayImage(row1:row2, col1:col2);

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!