You don't need to do edge detection - not sure who told you that. You simply need to do thresholding and hole filling.
binaryImage = grayImage > 50; % or whatever gray level the background is.
mask = imfill(binaryImage, 'holes');
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!