defining a polygon area within an array

I have a 2D array of numbers.
I have a polygon with defined x and y coordinates.
Could someone please help me set the area within the array that the polygon overlaps to 0 please.

Antworten (2)

Akira Agata
Akira Agata am 26 Mär. 2020

1 Stimme

How about the following solution?
% 100-by-100 sample matrix
Zin = peaks(100);
Zin = Zin - min(Zin(:));
% Example of polygon
pgon = polyshape([10 10 80 30], [10 30 30 10]);
% Create logical index which indicates inside/outsize the polygon
[colGrid,rowGrid] = meshgrid(1:size(Zin,2),1:size(Zin,1));
idx = isinterior(pgon,[colGrid(:),rowGrid(:)]);
idx = reshape(idx,size(Zin));
% Set elements inside the polygon to 0
Zout = Zin;
Zout(idx) = 0;
% Show the result
figure
subplot(2,2,1)
contourf(Zin)
title('Original','FontSize',14)
colorbar
subplot(2,2,2)
plot(pgon)
xlim([1 100])
ylim([1 100])
box on
title('Polygon','FontSize',14)
subplot(2,2,3)
contourf(Zout)
title('Result','FontSize',18)
colorbar
Walter Roberson
Walter Roberson am 26 Mär. 2020

0 Stimmen

If you have the Computer Vision Toolbox, then you can use https://www.mathworks.com/help/vision/ref/insertshape.html#btppvxj-1-shape insertShape with 'filledpolygon' and 'Color', 'k' . This will write 0s into the part of the rectangle indicated by the coordinates. The resulting array will have been converted to RGB, but you can just take the first pane of it.

1 Kommentar

Jonathan
Jonathan am 26 Mär. 2020
Hi there is valuable information in the resulting array containing numbers that are essential for analysis. Is there anyway of using a function (maybe without the computer vision toolbox) that can preserve the resulting array?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Sparse Matrices finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 26 Mär. 2020

Beantwortet:

am 26 Mär. 2020

Community Treasure Hunt

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

Start Hunting!

Translated by