Is there a way to get a "thicker" bwconncomp connection?

4 次查看(过去 30 天)
See attached image. I have a stack of similar images and I want to remove the large white spaces on the top, bottom, and left of the image.
I used the code:
CC = bwconncomp(BW)
numPixels = cellfun(@numel,CC.PixelIdxList);
[biggest,idx] = max(numPixels);
BW(CC.PixelIdxList{idx}) = 0;
but this sets almost the entire picture black. I suspect it is because there is a little touching between the whites, I want matlab to only pick up the obvious white spaces on the sides. What am i doing wrong?

回答(1 个)

Gopichandh Danala
Gopichandh Danala 2017-6-20
编辑:Gopichandh Danala 2017-6-20
If you are just trying to replace all the white pixels in the surroundings to 0, all the connected white valleys on the edges also get removed.
img = rgb2gray(imread('image.png'));
BW = bwlabel(img); % based on labelling algorithm the left top is '1' so backgrounf label is '1'
img(BW == 1) = 0; % replace this label pixels in image to 0
figure, imshow(img);

Community Treasure Hunt

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

Start Hunting!

Translated by