#include "ipSegmentation.h"Go to the source code of this file.
Functions | |
| void | ipMITKSegmentationSplitContour (float *contour, int sizeContour, float *cutCoords, float *part1, int &size1, float *part2, int &size2) |
| bool | ipMITKSegmentationIsInsideContour (float *contour, int sizeContour, float x, float y) |
| bool ipMITKSegmentationIsInsideContour | ( | float * | contour, |
| int | sizeContour, | ||
| float | x, | ||
| float | y | ||
| ) |
Returns true if the specified point lies insede the contour, else returns false.
Definition at line 94 of file ipSegmentationContourUtils.cpp.
Referenced by ipMITKSegmentationGetCutPoints(), mitk::SetRegionTool::OnMousePressed(), and mitk::RegionGrowingTool::PerformRegionGrowingAndUpdateContour().
{
int i, j;
bool res = false;
for ( i=0, j=sizeContour-1;
i<sizeContour;
j=i++)
{
if (
( ((contour[2*i+1]<=y) && (y<contour[2*j+1]))
|| ((contour[2*j+1]<=y) && (y<contour[2*i+1])) )
&&
( x < (contour[2*j] - contour[2*i]) * (y - contour[2*i+1]) / (contour[2*j+1] - contour[2*i+1]) + contour[2*i])
)
res = !res;
}
return res;
}
| void ipMITKSegmentationSplitContour | ( | float * | contour, |
| int | sizeContour, | ||
| float * | cutCoords, | ||
| float * | part1, | ||
| int & | size1, | ||
| float * | part2, | ||
| int & | size2 | ||
| ) |
Input: one contour (start and end point identical). array of floats. [x1 y1 x2 y2 ...] Output: two contours (start and end point not neccessarily identical) cutCoords: two points that define the cut (must not [should not be] be identical)
S.....O . . . . . . . ------C2 S: Start of contour (two times in the array) . ------- . C1: cut point 1 C1------ . C2: cut point 2 . O . .. . .. . .. . .. O
Definition at line 40 of file ipSegmentationContourUtils.cpp.
Referenced by ipMITKSegmentationGetCutPoints().
{
int cut1, cut2, i=0;
bool cutReached;
size1 = 0;
size2 = 0;
do {
part1[2*size1] = contour[2*i];
part1[2*size1+1] = contour[2*i+1];
i++;
size1++;
cutReached = ( (cutCoords[0]==contour[2*i] && cutCoords[1]==contour[2*i+1]) ||
(cutCoords[2]==contour[2*i] && cutCoords[3]==contour[2*i+1]) );
} while (!cutReached);
cut1 = i;
part1[2*size1] = contour[2*i];
part1[2*size1+1] = contour[2*i+1];
size1++;
do {
part2[2*size2] = contour[2*i];
part2[2*size2+1] = contour[2*i+1];
i++;
size2++;
cutReached = ( (cutCoords[0]==contour[2*i] && cutCoords[1]==contour[2*i+1]) ||
(cutCoords[2]==contour[2*i] && cutCoords[3]==contour[2*i+1]) );
} while (!cutReached);
cut2 = i;
part2[2*size2] = contour[2*i];
part2[2*size2+1] = contour[2*i+1];
size2++;
do {
part1[2*size1] = contour[2*i];
part1[2*size1+1] = contour[2*i+1];
i++;
size1++;
} while (i<sizeContour);
}
1.7.2