Crop out unwanted part from an image.
2 次查看(过去 30 天)
显示 更早的评论
Dear friends, I want to crop out extra part of CT Head image. I mean i want my image should have only required part of the image by removing unwanted black background.
1 个评论
Sven
2011-11-15
So you have a single 2D image?
Let's say you want to remove the top and bottom 5 rows and the first 10 columns:
originalIm = rand(512,512);
croppedIm = originalIm(6:end-5, 11:end);
If this *doesn't* answer your question, please realise that you need to make your question more specific.
回答(2 个)
Walter Roberson
2011-11-15
Threshold the image so that the "black" background values are assigned 0. Suppose we refer to that result as ImThr . Then
foregroundcol = any(ImThr);
firstforegroundcol = find(foregroundcol, 1);
lastforegroundcol = find(foregroundcol, 1, 'last');
foregroundrow = any(ImThr,2);
firstforegroundrow = find(foregroundrow, 1);
lastforegroundrow = find(foregroundrow, 1, 'last');
And then we can extract the foreground from the frame:
foregroundImg = OriginalImg(firstforegroundrow:lastforegroundrow, firstforegroundcol:lastforegroundcol);
Note that this construction assumes there is no outline or annotations around the image, just image.
0 个评论
Image Analyst
2011-11-15
It does exactly this with the standard coins image, assuming you can determine foreground and background solely by intensity thresholding.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!