Effacer les filtres
Effacer les filtres

Change the photo background to white

10 vues (au cours des 30 derniers jours)
Malan Jayanka
Malan Jayanka le 30 Juil 2016
Modifié(e) : DGM le 26 Avr 2023
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.

Réponses (1)

Image Analyst
Image Analyst le 30 Juil 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);

Catégories

En savoir plus sur Image Processing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by