Remove background from image

조회 수: 18 (최근 30일)
Valnyr Lira
Valnyr Lira 2019년 5월 3일
답변: DGM 2023년 4월 30일
Hi, i'd like to remove the background from RGB images. Since this have to be done in a lot of images i'd like to automate this task.
Original image with background:
mx01.jpg
The image should be transformed as this one below, without background.
m001.jpg
I have cropped the images as the first one, however, i'm getting in trouble to remove the background.

답변 (1개)

DGM
DGM 2023년 4월 30일
% read the image
inpict = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/217934/mx01.jpeg');
% you could use color-based thresholding
% but with the low contrast and chroma, JPG damage is an obstacle
% in this case, there's plenty of object contrast in luma alone
Ymask = rgb2gray(inpict)<128;
Ymask = ~imfill(Ymask,'holes');
% adjust white level
inlevels = stretchlim(inpict).*[0; 1];
outpict = imadjust(inpict,inlevels);
% apply mask
outpict(repmat(Ymask,[1 1 3])) = 255;
imshow(outpict)

Community Treasure Hunt

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

Start Hunting!

Translated by