how to apply the result of bwboundaries() output ?

2 次查看(过去 30 天)
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 ?

采纳的回答

Image Analyst
Image Analyst 2017-4-3
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
  3 个评论
Image Analyst
Image Analyst 2017-4-4
I set it equal to true because ZeroPlate is a binary image and you said you want the value to be 1 (true).
Actually you're right sort of - I switched x and y. I thought bwboundaries returned (x,y) coordinates but it doesn't - it returns (row, column) which is (y, x). So the correct code should be:
for k = 1 : NumOfBoundaries
thisBoundary = boundaries{k};
% Set Value '1' to 'ZeroPlate'
% coordinates given in 'thisBoundary'
x = thisBoundary(:, 2);
y = thisBoundary(:, 1);
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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Computer Vision with Simulink 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by