MATLAB: How to apply the result of bwboundaries() output

image processingImage Processing ToolboxMATLAB and Simulink Student Suitematrix arraymatrix manipulation

This is the code.
%%%%%%Code begins %%%%
boundaries = bwboundaries(img);
NumOfBoundaries = size(boundaries, 1);
[x y t]= size(rgbImage);
ZeroPlate = redChannel == 0;
for k = 1 : NumOfBoundaries
thisBoundary = boundaries{k};
%%%%%I want to set Value '1' to 'ZeroPlate' co-%%%ordination given in 'thisBoundary' %%%%%%%%
%%%%%---------------the code goes here------------------%%%%
%%%%%end %%%%%
end
I want to set value '1' to the ZeroPlate (which is red-channel of the given image in which the pixel values are all zeros) according to the co-ordination obtaining from the values of 'boundaries' variable. How to do this ?

Best Answer

Try this:
%%%%%%Code begins %%%%
boundaries = bwboundaries(img);
NumOfBoundaries = size(boundaries, 1);
% Get size.
% Note: it is NOT NOT NOT [x,y,numColors] = size(rgbImage) as you had it.
% rows is y, NOT x. But actually this line is not needed.
[rows, columns, numberOfColorChannels]= size(rgbImage);
ZeroPlate = redChannel == 0;
for k = 1 : NumOfBoundaries
thisBoundary = boundaries{k};
% Set Value '1' to 'ZeroPlate'
% coordinates given in 'thisBoundary'
x = thisBoundary(:, 1);
y = thisBoundary(:, 2);
for index = 1 : length(x)
% Get row and column.
row = y(index);
column = x(index);
% Set that row and column = true = 1.
ZeroPlate(row, column) = true;
end
end
Related Question