Changing image background from black to white

2 views (last 30 days)
Hi,
I have chromosomes image and I segmented this image to multiple chromosome images (46 images). But after segmentation I got these images in black background. How I can changes the balck background to white?

Accepted Answer

Ilian
Ilian on 7 Apr 2020
You can try using connected components. With relatively simple problems this could work:
img_original = imread('image.jpeg'); % load image
img_pad = padarray(img_original,[10 10], 0); % pad to simplify cc
threshold = 35;
img_pad(img_pad<threshold) = 0; % threshold image
img_pad(img_pad>=threshold) = 1;
img_inverted = 1-img_pad; % invert image
CC = bwconncomp(img_inverted,4); % find connected components
pixelList = []; % list of pixel in background
for i = 1:length(CC.PixelIdxList)
% discard small components that are part of the chromosome
if length(CC.PixelIdxList{1,i}) > 1000
pixelList = [pixelList cell2mat(CC.PixelIdxList(i))'] ;
end
end
mask = zeros(size(img_pad)); % create a mask
mask(pixelList) = 1;
mask = mask(11:end-10,11:end-10); % remove padding
img_corrected = img_original;
img_corrected(logical(mask)) = 255; % set background pixels to white
% PLOT
figure;
subplot(1,4,1); imagesc(img_original); axis image; colormap gray
subplot(1,4,2); imagesc(img_inverted); axis image; colormap gray
subplot(1,4,3); imagesc(mask); axis image; colormap gray
subplot(1,4,4); imagesc(img_corrected); axis image; colormap gray
  2 Comments
Mona Al-Kharraz
Mona Al-Kharraz on 7 Apr 2020
I don't know how I can thank you. You help me many thanks

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!