Changing image background from black to white
3 次查看(过去 30 天)
显示 更早的评论
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?
0 个评论
采纳的回答
Ilian
2020-4-7
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 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Red 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!