Automatically crop an object from a solid background as close as possible to the object edges.
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jacques Fourie
el 17 de Jun. de 2014
Comentada: Jacques Fourie
el 20 de Jun. de 2014
I am trying to crop an object/product from a relatively solid background but have been struggling to get a perfect implementation or at least something that works most of the time.
My previous questions were asked on Stack Overflow and I've been able to get decent results and cropping a rectangle works almost perfectly:
My current approach is to find a mask of the image and then change every unwanted pixel to white, but this hasn't given me consistent results:
original = imread('1.jpg');
level = graythresh(original);
img = rgb2gray(original);
mask = im2bw(img,level+0.1);
se = strel('line',10,90);
mask = imdilate(~mask,se);
mask = imfill(mask,'holes');
bw = activecontour(img,mask);
rows = numel(original(:,1,1));
columns = numel(original(1,:,1));
for i = 1:rows
for j = 1:columns
if ( bw(i,j,1) == 0 )
original(i,j,:) = 255;
end
end
end
imshow(original);
A preview image:
0 comentarios
Respuesta aceptada
Image Analyst
el 17 de Jun. de 2014
From the looks of your code, it looks like you should come to Answers before Stack Overflow. For example, you last double loop can be done vectorized. Anyway, if you want as close as possible, why are you dilating your image and doing an activecontour? Both of these will give you a boundary slightly off your "true" boundary. I'd recommend converting to hsv colorspace and threshold for high saturation. The objects will be selected and the white background will not be selected (because white and shadows have low S value). See the color segmentation demos in my File Exchange, especially this one: http://www.mathworks.com/matlabcentral/fileexchange/28512-simple-color-detection-by-hue
1 comentario
Más respuestas (0)
Ver también
Categorías
Más información sobre Convert Image Type en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!