Change the photo background to white
4 views (last 30 days)
Show older comments
I have a RGB image of 256*256 pixels. How to copy RGB pixel to another image. Actually I want to convert background into pure white(255).So how do I do that task. Example image was attached.
0 Comments
Answers (1)
Image Analyst
on 30 Jul 2016
Try this:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
% Get the base filename.
baseFileName = 'bottle.jpg'; % Assign the one on the button that they clicked on.
% Get the full filename, with path prepended.
folder = pwd; % Current folder
fullFileName = fullfile(folder, baseFileName);
% Check if file exists.
if ~exist(fullFileName, 'file')
% File doesn't exist -- didn't find it there. Check the search path for it.
fullFileNameOnSearchPath = baseFileName; % No path this time.
if ~exist(fullFileNameOnSearchPath, 'file')
% Still didn't find it. Alert user.
errorMessage = sprintf('Error: %s does not exist in the search path folders.', fullFileName);
uiwait(warndlg(errorMessage));
return;
end
end
% Read in image.
originalImage = imread(fullFileName);
% Get the dimensions of the image.
% numberOfColorBands should be = 1.
[rows, columns, numberOfColorBands] = size(originalImage);
if numberOfColorBands > 1
% It's not really gray scale like we expected - it's color.
% Convert it to gray scale by taking only the blue channel.
grayImage = min(originalImage, [], 3); % Take blue channel.
else
% It's already grayscale
grayImage = originalImage;
end
% Display the original image.
subplot(2, 3, 1);
imshow(originalImage);
axis on;
title('Original Image', 'FontSize', fontSize, 'Interpreter', 'None');
% Display the original image.
subplot(2, 3, 2);
imshow(grayImage, []);
axis on;
title('Gray Scale Image', 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Get rid of tool bar and pulldown menus that are along top of figure.
set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
drawnow;
% Let's compute and display the histogram.
subplot(2, 3, 3);
histogram(grayImage);
xlim([0, 255]);
grid on;
title('Intensity Histogram of Gray Scale Image', 'FontSize', fontSize, 'Interpreter', 'None');
xlabel('Gray Level', 'FontSize', fontSize);
ylabel('Pixel Count', 'FontSize', fontSize);
% Need to get the background (light stuff) but not get any light stuff in the bottle.
% Threshold to find dark.
binaryImage = grayImage < 100;
% Extract the largest blob only
binaryImage = bwareafilt(binaryImage, 1);
% Fill any holes.
binaryImage = imfill(binaryImage, 'holes');
% Invert to get the background.
binaryImage = ~binaryImage;
% Display the binary image.
subplot(2, 3, 4);
imshow(binaryImage, []);
axis on;
title('Binary Background Image', 'FontSize', fontSize);
% Initialize a new output image.
outputImage = originalImage;
% Mask the background to be white by making a uint8 image of
% all 255 where the background is then adding, which will clip.
backgroundImage = repmat(uint8(255*binaryImage), [1,1,3]);
outputImage = outputImage + backgroundImage;
% Display the final output image.
subplot(2, 3, 5);
imshow(outputImage, []);
axis on;
title('All White Background Image', 'FontSize', fontSize);
0 Comments
See Also
Categories
Find more on Image Processing Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!