estimate_foe ( : : UpLeftRowB, UpLeftColB, UpLeftRowE, UpLeftColE, UpRightRowB, UpRightColB, UpRightRowE, UpRightColE, DwLeftRowB, DwLeftColB, DwLeftRowE, DwLeftColE, DwRightRowB, DwRightColB, DwRightRowE, DwRightColE : RowFOE, ColFOE )
Calculate vanishing point from given alignments.
The operator estimate_foe calculates the vanishing point from
given alignments.
At the vanishing point all lines in the image running parallel to the camera
axis in three dimensions meet (with perspective projection). These
alignments (each starting and ending point) are expected as input by the
procedure. UpLeftRowB - UpLeftColE
are alignments running from top left to bottom right.
Accordingly UpRightRowB - UpRightColE
run from top left to bottom right,
DwLeftRowB - DwLeftColE
from bottom left to top right and DwRightRowB -
DwRightColE from bottom right to top left.
Each of these four sets of alignments can also be empty.
The routine intersects all lines from
UpLeftRowB-UpLeftColE
(DwLeftRowB - DwLeftColE) with all lines from
UpRightRowB - UpRightColE (DwRightRowB -
DwRightColE) and estimates the wanted vanishing point as
weighted mean value of all these intersections. The weighting of an
intersection is the minimum of the lengths of the intersected lines.
Note:
The operator estimate_foe can also be used, for example,
for calculating the intersection of straight lines which have been splitted
upon segmentation.
Either all Up- or all Dw-lines remain unset.
Parameters
UpLeftRowB (input_control)
|
line.begin.y(-array) -> integer
|
Line indices of the starting points of the alignments
from top left to bottom right. |
UpLeftColB (input_control)
|
line.begin.x(-array) -> integer
|
Column indices of the starting points of the alignments
from top left to bottom right. |
Range of values: 0 <= UpLeftColB <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
UpLeftRowE (input_control)
|
line.end.y(-array) -> integer
|
Line indices of the ending points of the alignments
from top left to bottom right. |
Range of values: 0 <= UpLeftRowE <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
UpLeftColE (input_control)
|
line.end.x(-array) -> integer
|
Column indices of the ending points of the alignments
from top left to bottom right. |
Range of values: 0 <= UpLeftColE <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
UpRightRowB (input_control)
|
line.begin.y(-array) -> integer
|
Line indices of the starting points of the alignments
from top right to bottom left. |
Range of values: 0 <= UpRightRowB <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
UpRightColB (input_control)
|
line.begin.x(-array) -> integer
|
Column indices of the starting points of the alignments
from top right to bottom left. |
Range of values: 0 <= UpRightColB <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
UpRightRowE (input_control)
|
line.end.y(-array) -> integer
|
Line indices of the ending points of the alignments
from top right to bottom left. |
Range of values: 0 <= UpRightRowE <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
UpRightColE (input_control)
|
line.end.x(-array) -> integer
|
Column indices of the ending points of the alignments
from top right to bottom left. |
Range of values: 0 <= UpRightColE <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
DwLeftRowB (input_control)
|
line.begin.y(-array) -> integer
|
Line indices of the starting points of the alignments
from bottom left to top right. |
Range of values: 0 <= DwLeftRowB <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
DwLeftColB (input_control)
|
line.begin.x(-array) -> integer
|
Column indices of the starting points of the alignments
from bottom left to top right. |
Range of values: 0 <= DwLeftColB <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
DwLeftRowE (input_control)
|
line.end.y(-array) -> integer
|
Line indices of the ending points of the alignments
from bottom left to top right. |
Range of values: 0 <= DwLeftRowE <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
DwLeftColE (input_control)
|
line.end.x(-array) -> integer
|
Column indices of the ending points of the alignments
from bottom left to top right. |
Range of values: 0 <= DwLeftColE <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
DwRightRowB (input_control)
|
line.begin.y(-array) -> integer
|
Line indices of the starting points of the alignments
from bottom right to top left. |
Range of values: 0 <= DwRightRowB <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
DwRightColB (input_control)
|
line.begin.x(-array) -> integer
|
Column indices of the starting points of the alignments
from bottom right to top left. |
Range of values: 0 <= DwRightColB <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
DwRightRowE (input_control)
|
line.end.y(-array) -> integer
|
Line indices of the ending points of the alignments
from bottom right to top left. |
Range of values: 0 <= DwRightRowE <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
DwRightColE (input_control)
|
line.end.x(-array) -> integer
|
Column indices of the ending points of the alignments
from bottom right to top left. |
Range of values: 0 <= DwRightColE <= 512 (lin) |
Minimum increment: 1
|
Recommended increment: 10
|
RowFOE (output_control)
|
point.y -> real
|
Line index of the vanishing point. |
ColFOE (output_control)
|
point.x -> real
|
Column index of the vanishing point. |
Result
The operator estimate_foe returns the value TRUE if the parameters
are correctly set. Otherwise an exception is raised.
Possible Predecessors
detect_edges1,
split_skeleton2,
select_lines1,
select_lines2
See also
detect_edges1,
select_shape
Copyright © 1996-1997 MVTec Software GmbH