Does anyone know of an easy way to convert a 2D triangulation to a binary image, which represents the inside?
Let my clarify my question with a picture: http://i41.tinypic.com/2gvvvnl.jpg The goal is to go from left to right…
My triangulation is given its Points and the ConnectivityList (i.e., it was created with the matlab function "triangulation").
It is important that no holes get filled and all features are preserved.
BEST ANSWER SO FAR:
% Make some data
pts = rand(50,2);DT = delaunayTriangulation(pts);% Find a central triangle to remove
[~,holeTrias] = min(sum(abs(DT.incenter - 0.5),2));holeTrias = [holeTrias DT.neighbors(holeTrias)];triasMask = ~ismember(1:DT.size(1), holeTrias);T = triangulation(DT.ConnectivityList(triasMask,:), DT.Points);% Define query points
X = 0:0.05:1;Y = 0:0.05:1;[xMat,yMat] = meshgrid(X,Y);IN = false(size(xMat));for t = 1:size(T,1) vertsXY = T.Points(T.ConnectivityList(t,:),:); IN = IN | inpolygon(xMat,yMat, vertsXY(:,1), vertsXY(:,2));end% Show the result
figurepatch('faces',T.ConnectivityList,'vertices',T.Points,'FaceColor','g')hold onplot(xMat(IN),yMat(IN),'b.',xMat(~IN),yMat(~IN),'r.')
Best Answer